1

在这里,我正在尝试使用 jquery 对文本框进行电子邮件验证,并在 onclientclick 上调用该函数,并且我也有一个按钮单击事件。但是按钮单击事件在 javascript 函数之前触发。我需要在触发之前验证文本框按钮单击事件。这是我的代码

 $(document).ready(function () {
             $("#MainContent_txtEmail").blur(function () {
                ValidateEmail();
             });

             function ValidateEmail()
             {
              var emailReg = /^([\w-\.]+@([\w-]+\.)+[\w-]{2,4})?$/;
                 var emailaddress = $("#MainContent_txtEmail").val();
                 if (!emailReg.test(emailaddress)) {

                     $("#emailspan").html('<font color="red" size=2px;>Please enter valid Email address</font>');
                     return false;
                 }
                 else {

                     $("#emailspan").html('<font color="red"></font>');
                     return true;
                 }
             }
         });

 <asp:TextBox ID="txtEmail" name="txtEmail" runat="server" CausesValidation="false" TextMode="Email">
            </asp:TextBox><span id="emailspan" value="0"></span>
            <asp:Button ID="btnsubmit" CssClass="btn pdf-submit" runat="server" Text="SEND"  OnClientClick="return ValidateEmail();" OnClick="btnsubmit_Click"/>

和我的活动

  protected void btnsubmit_Click(object sender, EventArgs e)
        {

            SendSmtpEmail(txtEmail.Text, "noreply@a.net", "test", "test-template");
        }

有什么建议吗??

4

4 回答 4

2

嘿在你的代码中::

`$("#MainContent_txtEmail").blur(function () 

为什么要调用该函数,您可能必须将其更改为

$("#txtEmail").blur(function ()` 

我猜这会起作用!

于 2013-09-24T10:36:40.893 回答
1

您需要为 btnsubmit 删除 OnClick

<asp:Button ID="btnsubmit" CssClass="btn pdf-submit" runat="server" Text="SEND"  OnClientClick="return ValidateEmailThenSubmit();" />

然后在验证后在代码中手动点击btnsubmit。

function ValidateEmailThenSubmit()
{
    ValidateEmail();
    $("#" + <%= btnsubmit.ClientID %>).click();
}
于 2013-09-24T10:32:18.867 回答
1

为什么要使用 JavaScript?只需像这样使用 asp.net RegularExpressionValidator:

<asp:RegularExpressionValidator ID="regexEmailValid" runat="server" ValidationExpression="\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" ControlToValidate="tbEmail" ErrorMessage="Invalid Email Format"></asp:RegularExpressionValidator>

更多信息在这里http://msdn.microsoft.com/en-us/library/system.web.ui.webcontrols.regularexpressionvalidator.aspx

于 2013-09-24T10:33:44.510 回答
0

在作为参数传递给 $.ready() 方法的匿名方法中声明的 ValidateEmail() 方法不可见。

在 $(document).ready 之外获取 ValidateEmail 方法,它应该可以工作。

于 2013-09-24T10:34:08.183 回答