Jquery验证和更新面板在一起

时间:2010-09-13 10:41:24

标签: jquery asp.net jquery-plugins updatepanel jquery-validate

我正在尝试使用jquery validation插件,但我的表单位于更新面板中。因此,即使在提交表格后应用验证,它也会验证并显示所需的消息,但不会持续2秒,然后提交表格。
解决方法是什么?

我也试过这个。

<asp:UpdatePanel ID="AddUserPanel" runat="server"
             ChildrenAsTriggers="false"
             UpdateMode="Conditional">

但这似乎也没有帮助。

4 个答案:

答案 0 :(得分:3)

如果您使用脚本管理器,则需要以下l33t代码:

  $(function () {
 //Code that runs before update panel is fired.

        //Listen for update panel
        Sys.WebForms.PageRequestManager.getInstance().add_endRequest(EndRequestHandler);
        //Re-initialize jquery after an auto post back.
        function EndRequestHandler(sender, args) {
            //Do work after update panel fires.
        } 
    });

所以基本上你有重复的代码,EndRequestHandler()之外的代码和里面的代码。

答案 1 :(得分:0)

你需要返回false并在onsubmit上停止事件冒泡,如下所示:

$("form").submit(function (e) {
  e.preventDefault();
  return(false);
});

但是我对ASP一无所知,所以我不知道在这种情况下是否会有所帮助。

也许您需要在加载此面板中的内容后使用.live或重新附加处理程序,因此onsubmit事件是否绑定到它?

答案 2 :(得分:0)

Asp.net WebForms使用提交表单的__doPostback()函数。

这就是我要做的事情:

  1. 检查表单提交执行以查看事情是否按预期工作,因此首先进行验证(我很确定它会这样做,因为你确实得到了这些消息)并检查每个部分的代码。

  2. 如果验证不能通过返回调用false的{​​{1}}或两者来阻止默认事件执行(冒泡),那么应该将其更改为与Asp.net WebForms充分协作。

  3. 如果验证方面的一切似乎都很好,您应该更改preventDefault()功能。听起来确实很糟糕,但有时这样的事情必须要做。复制现有代码并添加其他检查。没什么可担心的。

  4. 同时检查此Stackoverflow question

    哦,天哪。只需对此进行Google搜索,并仅包含stackoverflow结果:jQuery validation webforms site:stackoverflow.com

答案 3 :(得分:0)

如果我没记错的话,你可以使用常规按钮而不是asp:按钮,它不会导致回发。如果是这种情况,那么您可以使用JavaScript来更新UpdatePanel。