2010-11-22 39 views
0

我有我自己的JQuery驗證的窗體。 單擊JQuery <button id=btnRegister type=submit>時,我的驗證代碼被調用,如果無效,表單不提交。所有作品都很棒。帶有onclick()以及onserverclick()的JQuery <button>。不可能?

我在這個表單上有另一個<button id=btnSave>。 我希望btnSave只有在表單數據有效的情況下才會觸發asp.net服務器端事件(onserverclick)。

我曾嘗試以下 - <button type=submit onclick='if($(this).closest('form').submit()==false) return;' onserverclick='btnSave_click' runat =server>Save</button>

當我點擊btnSave,它調用我的表單提交事件處理程序,它正確返回false,若無效。到現在爲止還挺好。在此之後,我想要觸發onserverclick事件而不是。但是,即使表單無效,onserverclick也會觸發並返回頁面。

正如我所看到的,不能同時有onclick和onserverclick。 我該怎麼做才能讓他們和諧共處? 如果我將<button>更改爲<input type=submit>,則全部解決。但我更喜歡<button>的外觀和感覺。

回答

1

爲了防止回發,請確保您的JS函數返回false。我在上面的代碼中看到您的測試爲false,但沒有返回false。

<button type=submit onclick='if($(this).closest('form').submit()==false) return false;' onserverclick='btnSave_click' runat =server>Save</button> 
+0

是的,返回false不回發,但我不想onclick總是返回false。如果輸入有效,那麼它應該返回true。我試圖返回submit()函數的值,但它返回一個[object object]。所以我應該改寫我的問題 - 如何獲取我的submit()函數的返回值 – tubelight 2010-11-22 12:39:13

+0

alert($(this).closest('form')。submit())返回[object]而不是true/false。如何從表單的提交功能獲取返回值? – tubelight 2010-11-22 12:43:34

+0

事件處理程序總是返回布爾值,指示是否應該發生事件默認值。如果您不希望發生默認的「提交」行爲,即一個回傳,無論輸入是否有效,您都應該返回false。 – Domenic 2010-11-23 03:49:18

0

Domenic,thx,但重點超出了這一點。我如何在我的onclick代碼中獲取表單提交處理程序的返回值(true或false)? var sts=myFunc(){return true/false;}會將sts設置爲true/false。但var sts = $(this).closest('form').submit()將sts設置爲[object]而不是true/false。因此我不知道表單的提交處理程序是否會在按鈕的onclick中返回true/false。我必須走錯路,因爲這看起來像是按鈕和onclick的基本使用。

我找到了解決方法。而不是做 -

<button onclick='if($(this).closest('form').submit()==false) return false;'> 我現在做的 - <button onclick='if($.fn.validate()==false) return false;'

$(this).closest('form').submit()提交表單,並基於該提交返回true或false用戶的輸入。但是,我仍然無法訪問onclick代碼中的返回值。所以問題依然存在。爲了解決它,我現在調用我的validate()函數,而不是在onclick中的表單提交處理程序。我的validate()函數作爲普通函數返回true/false。如果爲false,我的onclick返回,否則繼續從asp.net中的__doPostback()函數。

解決方法還有一個額外的好處 - 如果表單有效,我的先前嘗試將提交表單兩次,一次將自己的調用傳遞給.submit(),然後通過asp.net中的__dopostback。所以回想起來,我太天真了。學過的知識。

相關問題