我的 jQuery 验证脚本有一个奇怪的行为。
我有一个带有提交按钮的简单表单(ID = _btnSave)。 我验证三个文本字段:名字、姓氏和电子邮件。
[不起作用] - 正确填写表单后,不会触发我的提交按钮上的方法:OnClick="_btnSave_Click"。
[正在运行] - 我写下了错误的电子邮件地址,然后进行更正,单击提交按钮,调用我的服务器端方法。
总结一下情况:如果我不触发电子邮件验证,则不会触发 _btnSave_Click。
在这两种情况下页面都会刷新。
<asp:Button ID="_btnSave" OnClick="_btnSave_Click" CssClass="button big default" runat="server" Text="<%$ Resources:Resource, SAVE_CHANGES %>" />
<小时/>
$("#form1").validate({
rules:{
<%=_txtEmail.UniqueID %>:{ minlength:5, required:true, email:true,
remote: {
url: "/Services/ValidatorService.asmx/ValidateEmail",
dataType:"json",
type:"post",
data: {
email: function() { return $("#<%=_txtEmail.ClientID%>").val();},
contactUID: function() { return $("#<%=_hidContactUID.ClientID%>").val();}
}
}
},
<%=_txtFirstName.UniqueID %>: { required:true},
<%=_txtLastName.UniqueID %>: { required:true},
},
invalidHandler: function(form, validator) {
errorContainer.fadeIn();
},
errorElement: "span",
errorClass:"errortxt",
highlight: function(element, errorClass) {
$(element).parent().parent().addClass("error");
},
unhighlight: function(element, errorClass) {
$(element).parent().parent().removeClass("error");
if (this.numberOfInvalids() == 0) {
errorContainer.fadeOut();
}
},
messages: { <%=_txtEmail.UniqueID %>: { remote : "<%=EmailUsed %>" }
},
errorPlacement: function(error, element) {
error.insertAfter(element);
}
});
$("input").click(function(){_defaultButton = $("#<%=_btnSave.ClientID%>");});
});
感谢您的帮助。
格雷格
最佳答案
我知道这个问题很老了,但我最近遇到了同样的问题,并且在网上找不到答案。在验证器选项中添加自定义提交处理程序解决了我的问题:
$("#form1").validate({
submitHandler: function (form) {
__doPostBack("_btnSave", "OnClick");
}
// your other options
});
关于asp.net - jQuery Validate 未触发回发方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4648013/