2017-08-08 64 views
0

我使用Jquery Validate的submitHandler來觸發我的onClick事件。 我試着用$("#btnPay").disabled = true;來禁用按鈕。 但是,它不起作用。使用jQuery時防止雙擊validate submitHandler

以下是我迄今爲止試過的代碼。

$("#myForm").validate({ 
     rules: { 
      cardholdername: { 
       required: true, 
      }, 
      cardholderemail: { 
       required: true, 
      }, 
     }, 
     messages: { 
      cardholdername: { 
       required: "Please enter your name", 
      }, 
      cardholderemail: { 
       required: "Please enter your email", 
      }, 
     }, 
     onkeyup: false, //turn off auto validate whilst typing 
     submitHandler: function (form) { 

      $("#btnPay").disabled = true; 

      event.preventDefault(); 

      var form = document.querySelector('form'); 
      var extraDetails = { 
       name: $('#cardholder-name').val(), 
       email: $('#cardholder-email').val(), 
      }; 
      stripe.createToken(card, extraDetails).then(setOutcome); 

     } 
    }); 
+0

可能重複的[jquery驗證插件預防雙重提交驗證](https://stackoverflow.com/questions/5996950/jquery-validate-plugin-prevent-double-submit-on-validation) –

+0

'$(「 #btnPay「)。prop('disabled',true);' –

回答

0

submitHandler大火後,才表單已成功驗證。您應該添加一個單獨的事件偵聽器點擊,沿東西的

// Prevent multiple form submission 
$('#btnPay').on('click', function(e) { 
    $(this).prop("disabled", true); 
}); 

//the rest of your code 

行請記住,你必須處理使按鍵回成功/錯誤 - submitHandlerinvalidHandler是完美的候選人。

0

$(「#btnLogin」)。attr('disabled','disabled');解決了我的問題。