这里我试图使用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");
}
有什么建议吗?
答案 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方法,它应该可以工作。