如何首先调用clientide脚本函数然后调用服务器端按钮单击事件?

时间:2013-09-24 10:28:01

标签: c# javascript jquery asp.net

这里我试图使用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 个答案:

答案 0 :(得分:2)

嘿,你的代码::

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

为什么要调用函数,可能需要将其更改为

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

这会工作我猜!

答案 1 :(得分:1)

您需要删除OnClick for btnsubmit

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

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

function ValidateEmailThenSubmit()
{
    ValidateEmail();
    $("#" + <%= btnsubmit.ClientID %>).click();
}

答案 2 :(得分: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

答案 3 :(得分:0)

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

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