2011-09-16 84 views
3

我在表單中有2種驗證方法。 a。 jQuery驗證 b。 Form.Submit()處理程序中的幾個複雜的硬編碼規則。如何在JQuery驗證SubmitHandler和Form.Submit成功後阻止輸入?

我需要禁用一次提交按鈕一次& b驗證成功,以便用戶不提交兩次。

我最好的嘗試,到目前爲止涉及添加一個「submitHandler」到jQuery驗證爲使...

jQuery("#myForm").validate(
{ 
    submitHandler: function (form) { 
     form.submit({ 
      success: function (submittedForm, action) { 
       alert("submitting"); 
       $('input[type=submit]', submittedForm).attr('disabled', 'disabled'); 
      } 
     }); 
    } 
});  

當然,這似乎並沒有工作。到達SubmitHandler時,兩個驗證階段都已經運行?如果(a)JQuery驗證失敗,則不觸發此事件。但是,如果(b)自定義驗證失敗,那麼雖然表單未提交,但仍會運行。如果兩個(一個& b)通過它運行但內部「成功」回調永遠不會達到。所以我的輸入永遠不會被禁用。

這裏是1-3的示例的n個提交驗證(其動態形式存在其中.submit用於驗證失敗時返回false其它類似的驗證)...

$('#myForm').submit(function() { 
    // If one is checked they must both be checked. 
    if ($(SessionRadioId_2).is(':checked') || $(SessionRadioId_4).is(':checked')) { 
     if (!($(SessionRadioId_2).is(':checked')) || !($(SessionRadioId_4).is(':checked'))) { 
      alert('If you plan on attending "ABC" you must select it in both Session 2 & 3.'); 
      return false; 
     } 
    } 

謝謝, 賈斯汀

回答

0

由於多次提交是你想如何避免,而不是禁用後驗證提交按鈕,之前禁用它,然後,如果驗證失敗,重新啓用它。

+0

同意這將是一個合適的解決方案。但是,我沒有看到任何方法來連接validationFailed事件。記住它需要處理JQuery驗證失敗和OnSubmit失敗。在調用驗證之前,我還可以使用哪些事件處理程序來禁用? – Justin