簡體   English   中英

如何使電子郵件地址為必填項並同時進行驗證?

[英]How to make email address required and validate at the same time?

我正在嘗試驗證並要求文本框提供電子郵件地址中的一個字段,但由於它們無法正常工作,因此無法使用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:

 <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>

問題的屏幕截圖:

電子郵件中的文本框將變為綠色,但不應顯示為綠色,因為電子郵件的格式無效。 它應該變成紅色。 因此,我如何同時要求和驗證,以及顯示必填字段和無效格式的消息?

您可以使用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" />

您可以切換到CustomValidator並將ValidateEmptyText設置為true。

<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>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM