2010-09-13 49 views
10

我试图使用jquery validation插件,但我的表单是在更新面板。因此,即使在提交表单验证之后,它也会验证并显示所需的信息几乎2秒钟,然后提交表单。
这是什么解决方法?jquery验证和更新面板在一起

我也试过这个。

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

但这也似乎没有帮助。

+0

哪个验证插件? – Hawxby 2011-02-05 10:47:07

+0

@Hawxby:http://bassistance.de/jquery-plugins/jquery-plugin-validation/ – naveen 2011-02-05 12:18:26

+0

更新面板对于毫无戒心的新人来说是一件闪亮的玩具。我强烈建议你发现AJAX :)(但我确实有答案,并会将代码从我故意丢失的地方拉出来,一旦我发现了AJAX) – 2011-02-12 06:29:45

回答

0

您需要返回false停止事件冒泡对onsubmit,像这样:

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

但是我不知道什么ASP,所以我不知道这是否会在这方面的帮助特殊案例。

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

0

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

这是我会做:

  1. 检查表单提交执行看到的东西是否按预期工作,以便验证首先发生(我敢肯定它,因为你得到这些消息了)并检查每个零件的代码。

  2. 如果验证并不能阻止默认事件执行(冒泡)由要么返回false调用preventDefault()或两者,那么它应该改为与Asp.net的WebForms充分合作。

  3. 如果在验证方面看起来一切正常,您应该更改您的__doPostback()函数。它确实听起来很骇人,但有时候这样的事情必须完成。复制现有的代码并添加额外的检查。没什么好担心的。

另请检查此Stackoverflow question

哦,地狱。刚做这一个谷歌搜索,并只包括计算器的结果:jQuery validation webforms site:stackoverflow.com

2

如果你使用你需要下面的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之外()和里面。

0

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