如何先调用客户端脚本函数,然后再调用服务器端按钮单击事件

How to call a clientside script function first and then call a server side button click event?

本文关键字:调用 服务器端 按钮 单击 事件 然后 何先 客户端 脚本 函数      更新时间:2023-09-26

在这里,我尝试使用 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");
        }

任何建议??

嘿 在你的代码中 ::

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

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

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

我想这会起作用!!

您需要删除 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();
}

为什么要使用 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

ValidateEmail() 方法在

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

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