2014-10-01 64 views
1

我們遇到了開源第三方應用程序的問題。許多表單需要一段時間才能提交,而且人們多次按下「提交」按鈕。這些表單中有許多已經使用onsubmit來驗證表單。我們不想傷害任何這些。成功提交表單後禁用表單

起初,我們認爲我們可以只是禁用一次點擊提交按鈕。問題是如果表單不驗證,那麼該按鈕仍然被禁用。

我們也不能只使用基本的onsubmit,因爲我們會覆蓋當前的驗證和其他過程。

有沒有一種方法,我們可以禁用提交按鈕後驗證,當表單實際上開始成功提交?

+0

您可以發佈有關事件處理程序的窗體的onsubmit事件代碼(或信息)?如果驗證的函數返回值,則可以創建一個包裝函數,該函數仍然會執行當前的eventHandler,並且如果驗證函數返回信息,可能會重新啓用表單。 – 2014-10-01 22:11:03

+0

我故意沒有發佈任何代碼,因爲我正在處理最純粹意義上的一般情況。由於這是一個有很多差異的第三方解決方案,我需要一個解決方案,它可以在應用程序中的多種表單中工作,而不管他們的javascript驗證。 – eisaacson 2014-10-01 22:15:19

+0

那麼,如果你不得不採取當前事件處理程序的「黑匣子」視圖,那麼你幾乎侷限於將它們包裝在你創建的函數中,或者不使用當前的事件處理程序。 – 2014-10-01 22:18:57

回答

0

如果您使用的是jQuery,那麼調用您的validate函數,如果失敗,只需重新啓用該按鈕。

0

由於您無法控制第三方應用程序,因此一種方法是在點擊時禁用每個按鈕,然後在一段時間後重新啓用該按鈕 - 足以完成驗證例程。如果驗證功能成功,表單將提交,此時沒有按鈕重新啓用。

這應該讓你去:

$('button').on('click',function() { 
    $(this).prop('disabled', true); 
    (function(b) { 
    setTimeout(function() { 
     b.prop('disabled', false); 
    },1000); 
    } 
)($(this)); 
}); 

小提琴:http://jsfiddle.net/x3tv6vqo/