2010-09-13 54 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。