我們遇到了開源第三方應用程序的問題。許多表單需要一段時間才能提交,而且人們多次按下「提交」按鈕。這些表單中有許多已經使用onsubmit來驗證表單。我們不想傷害任何這些。成功提交表單後禁用表單
起初,我們認爲我們可以只是禁用一次點擊提交按鈕。問題是如果表單不驗證,那麼該按鈕仍然被禁用。
我們也不能只使用基本的onsubmit,因爲我們會覆蓋當前的驗證和其他過程。
有沒有一種方法,我們可以禁用提交按鈕後驗證,當表單實際上開始成功提交?
我們遇到了開源第三方應用程序的問題。許多表單需要一段時間才能提交,而且人們多次按下「提交」按鈕。這些表單中有許多已經使用onsubmit來驗證表單。我們不想傷害任何這些。成功提交表單後禁用表單
起初,我們認爲我們可以只是禁用一次點擊提交按鈕。問題是如果表單不驗證,那麼該按鈕仍然被禁用。
我們也不能只使用基本的onsubmit,因爲我們會覆蓋當前的驗證和其他過程。
有沒有一種方法,我們可以禁用提交按鈕後驗證,當表單實際上開始成功提交?
如果您使用的是jQuery,那麼調用您的validate函數,如果失敗,只需重新啓用該按鈕。
由於您無法控制第三方應用程序,因此一種方法是在點擊時禁用每個按鈕,然後在一段時間後重新啓用該按鈕 - 足以完成驗證例程。如果驗證功能成功,表單將提交,此時沒有按鈕到重新啓用。
這應該讓你去:
$('button').on('click',function() {
$(this).prop('disabled', true);
(function(b) {
setTimeout(function() {
b.prop('disabled', false);
},1000);
}
)($(this));
});
您可以發佈有關事件處理程序的窗體的onsubmit事件代碼(或信息)?如果驗證的函數返回值,則可以創建一個包裝函數,該函數仍然會執行當前的eventHandler,並且如果驗證函數返回信息,可能會重新啓用表單。 – 2014-10-01 22:11:03
我故意沒有發佈任何代碼,因爲我正在處理最純粹意義上的一般情況。由於這是一個有很多差異的第三方解決方案,我需要一個解決方案,它可以在應用程序中的多種表單中工作,而不管他們的javascript驗證。 – eisaacson 2014-10-01 22:15:19
那麼,如果你不得不採取當前事件處理程序的「黑匣子」視圖,那麼你幾乎侷限於將它們包裝在你創建的函數中,或者不使用當前的事件處理程序。 – 2014-10-01 22:18:57