jQuery验证插件。后经过验证工作不回来
问题描述:
我已经设置了验证。净形式与jQuery插件上,一切正常,在页面加载,但回发确认后停止工作。jQuery验证插件。后经过验证工作不回来
然后,如果我空需要选用一个领域,试图提交,当我的.Net验证抓住问题的客户端,然后在字段中的现场验证再次开始工作。
这里是重现该问题小的代码示例:
<script language="javascript">
$(document).ready(function() {
ValidateElements();
});
function ValidateElements() {
jQuery.validator.messages.required = " ";
jQuery.validator.messages.email = " ";
var rules = {};
rules[$("#<%=TxtInvoiceName.ClientID%>").attr("name")] = {
required: true
};
$('form').validate({
rules: rules,
success: function (label) {
},
errorPlacement: function (label) {
}
});
$("#MainForm").validate().form();
}
</script>
<style>
input.error {
border: 1px solid red;
}
</style>
<form id="MainForm" runat="server">
<div>
<asp:TextBox runat="server" ID="TxtInvoiceName" Text="" />
<asp:RequiredFieldValidator ID="RequiredFieldInvoiceName" runat="server" ErrorMessage=""
Display="Dynamic" ControlToValidate="TxtInvoiceName"></asp:RequiredFieldValidator>
<asp:Label runat="server" ID="LblTxtInvoiceNameValidate" AssociatedControlID="TxtInvoiceName"> </asp:Label>
<asp:Button runat="server" Text="PostBack" OnClick="PostBack" />
</div>
</form>
希望有人能指出我什么即时做错了。
答
我已经修改了你的ValidateElements运作了一下,试试这个:
function ValidateElements() {
jQuery.validator.messages.required = " ";
jQuery.validator.messages.email = " ";
var rules = {};
rules[$("#<%=TxtInvoiceName.ClientID%>").attr("name")] = {
required: true
};
var $form = $('#MainForm');
$form.validate({
rules: rules,
success: function (label) {
},
errorPlacement: function (label) {
}
});
// whenever an input element's blur event fires,
// revalidate the form. do this because the asp.net
// validators use this behavior
$form.find(':input').blur(function() {
$form.valid();
});
// revalidate the form on submit.
// better approach because it requires less form revalidation
// on the client side, but it won't be in "synch" with the
// asp.net client side validation
// $('#<%= Button1.ClientID %>').click(function() {
// return $form.valid();
// });
}
答
您只需要添加您的网页上一个小脚本回发
Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
function EndRequestHandler(sender, args) {
ValidateElements();
}
后,以取代所有的验证规则
这将放回您的验证规则在接下来的形式提交。