如何先调用客户端脚本函数,然后再调用服务器端按钮单击事件
本文关键字:调用 服务器端 按钮 单击 事件 然后 何先 客户端 脚本 函数 | 更新日期: 2023-09-27 18:32:44
在这里,我尝试使用 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 方法,它应该可以工作。