jQuery验证插件。后经过验证工作不回来

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">&nbsp;&nbsp;&nbsp;</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(); 
} 
后,以取代所有的验证规则

这将放回您的验证规则在接下来的形式提交。