更新面板与jquery验证冲突

时间:2011-11-23 07:51:10

标签: jquery asp.net validation asp.net-ajax updatepanel

我一直在提交点击中使用jQuery验证。我的页面包含两个div。

当我将两个div放在单个更新面板中时,问题就出现了,验证停止工作,错误显示

  

未捕获TypeError:对象[object Object]没有方法'validate'

当评论更新面板时,一切正常,但有完整的回发(我不想要)。

我已经使用了几乎所有的东西,我在互联网上找到了(noConflicts,Sys.WebForms.PageRequestManager.getInstance()等)。

任何人都可以帮助我吗?

代码:

负责人:

<script type="text/javascript" src="../../Javascript/Validators/jquery.validate.js"></script>
<script type="text/javascript">
    jQuery(document).ready
    (
      function () {
          jQuery("#btn_Save").live("click", function () {
              jQuery("#form1").validate
        (
          {
              rules: {
                  txtContactPerson: "required"
              },
              messages: {
                  txtContactPerson: " * Please enter Contact Person Name"
              }
          }
        );
          });
      }
    ); 
</script>          

身体:

更新面板中的简单两个列表div

1 个答案:

答案 0 :(得分:0)

实际上,您可以对服务器表单使用jQuery验证。但是,UpdatePanel变得棘手。尝试以下方法:

在标题中:

<script type="text/javascript">
     $(function () {
          $("#form1").validate(
          {
               rules: {
                    '<%= txtContactPerson.ClientID %>': "required"
               },
               messages: {
                    '<%= txtContactPerson.ClientID %>': " * Please enter Contact Person Name"
               }
          });
     })          
</script>

在ScriptManager控制之后:

<script type="text/javascript">
     Sys.WebForms.PageRequestManager.getInstance().add_initializeRequest(initializeRequestHandler);

     function initializeRequestHandler(sender, args) {
          if (args.get_postBackElement().id == '<%= btn_Save.ClientID %>' && $("#form1").valid() !== true) {
               args.set_cancel(true);
          }
     }
</script>

标记:

<asp:UpdatePanel ID="UpdatePanel1" runat="server">
     <ContentTemplate>
          <asp:TextBox runat="server" ID="txtContactPerson" />
          &nbsp;
          <asp:Button ID="btn_Save" runat="server" Text="Submit" />
     </ContentTemplate>
</asp:UpdatePanel>

如果您想要仅针对btn_Save停用异步回发,请删除此代码:args.get_postBackElement().id == '<%= btn_Save.ClientID %>' &&