2010-01-29 38 views
5

我正在使用一些jquery在單擊後禁用表單提交按鈕以防止意外重複點擊。這適用於除Firefox以外的所有瀏覽器。在Firefox中,如果用戶在發生提交按鈕禁用後使用瀏覽器「返回」按鈕返回頁面,則提交按鈕仍處於禁用狀態。有沒有解決這個問題的方法?在Firefox中使用後退按鈕時,表單提交按鈕保持禁用狀態

+1

您可以發佈您的代碼? – ryanulit 2010-01-29 21:27:46

+1

添加一個空的卸載處理程序。原因在這個相關的問題中討論:[跨瀏覽器onload事件和後退按鈕](http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button/201406 ) – user240515 2014-08-18 05:31:43

回答

0

如果瀏覽器禁用了緩存,那麼頁面將被重新加載,就像沒有任何事情發生一樣(沒有按鈕被點擊)。

如果你想要客戶端,你可以使用cookie。

現在,如果您有一個服務器端技術(PHP/Rails),那麼您可以將該值放在會話變量中。

4
$(document).ready(function() { 
    $('input[type=submit]', this).attr('disabled', false); 

    $('#myform').submit(function(){ 
     $('input[type=submit]', this).attr('disabled', true); 
    });  

}); 

使用jQuery,這將使按鈕在瀏覽器上使用後退按鈕時不被禁用。在FF 3.5上測試。

+0

實際上這是不正確的 - $(document).ready()在按下後退按鈕時不會觸發;也不會有任何內聯腳本。最好使用window.onpageshow事件,但如果您需要支持IE10或更低版本,那麼您的運氣不佳。 更多的信息在這裏:https://stackoverflow.com/questions/2638292/after-travelling-back-in-firefox-history-javascript-wont-run/2639165#2639165 – Chris 2017-10-27 10:59:42

+0

我的評論上面的一個簡短的附錄:這適用僅適用於現代瀏覽器,它會緩存整個頁面(包括腳本編輯)。因此,Erik上面的回答在發佈時可能是正確的 - 它仍然可以在IE10及更低版本中使用 - 但如果您在2017年或以後發現此答案,那麼請小心。 – Chris 2017-10-27 13:06:47

8

也許,你應該添加自動完成=「關閉」參數表單

<form autocomplete="off"> 
    <input type="submit" /> 
</form> 
+0

對我來說,Firefox認爲「自動完成」按鈕部分的狀態是件怪事......但無論如何,感謝您提供的乾淨解決方案。順便說一句,這不僅發生在瀏覽器返回時,而且通過Ajax交換表單的新版本時。 – lawrence 2011-05-10 00:19:00

+0

我會說這個答案應該被接受。 – 2015-06-09 07:00:07

+1

不適用於我(Firefox 54) – 2017-07-15 10:12:35