2017-08-09 11 views
0

テキストボックスから電子メールアドレスにフィールドを入力する必要がありますが、そのフィールドが機能しないため、RequiredFieldValidatorRequiredExpressionValidatorは使用できません。電子メールアドレスの作成と同時に検証する方法を教えてください。

ユーザーがテキストボックスに何かを入力しないと、ユーザーはテキストを入力する必要があり、テキストボックスに赤が表示され、その後にユーザーがテキストを入力するスクリプトがあります。緑。しかし、問題は彼が緑色になり、電子メールアドレスの形式が無効であるというメッセージを表示しないことです。

ASP.NET:

<FooterTemplate> 
           <asp:TextBox ID="txtbemail" runat="server"/>      
           <asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="txtbemail"> 
           <asp:RequiredFieldValidator ID="RequiredFieldValidator2" ControlToValidate = "txtbemail" 
runat="server" ErrorMessage="*Necessário preencher"/> 
            </asp:RegularExpressionValidator> 

             <asp:LinkButton ID="LinkButton1" CommandName="AddNew" runat="server" CssClass="btn btn-large btn-info pull-right"> 
            <i class="glyphicon glyphicon-plus"></i> &nbsp; Adicionar 
           </asp:LinkButton> 
          </FooterTemplate> 

はJavaScript:

01:問題の

<script type="text/javascript"> 

    //Define o intervalo para verificar os validadores 
    setInterval(function() { colorBorders() }, 100); 

    function colorBorders() { 
     if (typeof (Page_Validators) !== 'undefined') { 

      //Faz um loop para verificar os validadores 
      for (var i = 0; i < Page_Validators.length; i++) { 
       var validator = Page_Validators[i]; 
       var control = document.getElementById(validator.controltovalidate); 

       //Verifica se o controle existe 
       if (control != null) { 

        // se o validador não for válido, coloque a borda vermelha, se for válida retornar à cor padrão 
        // elseif com a cor do rgb é necessário para impedir o desdobramento do cromo piscar 
        if (!validator.isvalid) { 
         control.style.borderColor = '#ff0000'; 
        } else if (control.style.borderColor == "rgb(255, 0, 0)") { 
         control.style.borderColor = '#00ff00'; 
        } 
       } 
      } 
     } 
    } 
</script> 

スクリーンショット

電子メールのテキストボックスは緑色になりますが、電子メールが有効な形式ではないため、このテキストボックスは表示されません。代わりに赤くなるはずです。ですから、どのようにして同時に必要な確認と検証ができ、必要なフィールドと無効なフォーマットのメッセージを表示できますか?

答えて

0

これは、ASP.NETバリデーターで実現できます。以下のコードスニペットを試してみてください。私は私のプロジェクトでそれを使用し、それは必要なように動作します。それが役に立てば幸い。

<asp:TextBox ID="txtbemail" runat="server" ValidationGroup="validation"/> 
<asp:RequiredFieldValidator ID="requiredEmail" ForeColor="#E00000" 
    ControlToValidate = "txtbemail" ValidationGroup="validation" 
    runat="server" ErrorMessage="Necessary field" Text="*"/> 
<asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="txtbemail" ValidationGroup="validation" ErrorMessage="Invalid e-mail format">*</asp:RegularExpressionValidator> 

<asp:LinkButton ID="LinkButton1" CommandName="AddNew" runat="server" CssClass="btn btn-large btn-info pull-right" ValidationGroup="validation"> 
     <i class="glyphicon glyphicon-plus"></i> &nbsp; Adicionar 
</asp:LinkButton> 

<asp:ValidationSummary ID="ValidationSummary" runat="server" ForeColor="#E00000" ValidationGroup="validation" /> 
+0

あなたのコードはうまく動作します、ありがとうございます、しかし、私はそれが必要なフィールドを表示すると、赤色に変更することはできますか?また、ユーザーが無効な形式の電子メールを入力した場合に、別のメッセージを表示するにはどうすればよいですか? – Monteiro

+0

私は助けてうれしい。あなたは確かにできる。私はあなたの必要なものを含めるために私の答えを編集しました。それが助けられて以来、答えまたはupvoteを受け入れてください。 :) –

0

あなたはCustomValidatorに切り替えて、trueにValidateEmptyTextを設定することができます。

<asp:CustomValidator ID="CustomValidator1" runat="server" ControlToValidate="TextBox1" 
    ClientValidationFunction="checkEmail" ValidateEmptyText="True" SetFocusOnError="true"></asp:CustomValidator> 

<script type="text/javascript"> 
    function checkEmail(sender, element) { 

     //these first 2 lines remove spaces and update the textbox 
     var emailToCheck = element.Value.replace(/ /g, ""); 
     document.getElementById(sender.controltovalidate).value = emailToCheck; 

     var filter = /^([a-zA-Z0-9_\.\-\+])+\@(([a-zA-Z0-9\-])+\.)+([a-zA-Z0-9]{2,4})+$/; 
     element.IsValid = filter.test(emailToCheck); 
    } 
</script> 
関連する問題