我正在使用一些jquery在單擊後禁用表單提交按鈕以防止意外重複點擊。這適用於除Firefox以外的所有瀏覽器。在Firefox中,如果用戶在發生提交按鈕禁用後使用瀏覽器「返回」按鈕返回頁面,則提交按鈕仍處於禁用狀態。有沒有解決這個問題的方法?在Firefox中使用後退按鈕時,表單提交按鈕保持禁用狀態
回答
如果瀏覽器禁用了緩存,那麼頁面將被重新加載,就像沒有任何事情發生一樣(沒有按鈕被點擊)。
如果你想要客戶端,你可以使用cookie。
現在,如果您有一個服務器端技術(PHP/Rails),那麼您可以將該值放在會話變量中。
$(document).ready(function() {
$('input[type=submit]', this).attr('disabled', false);
$('#myform').submit(function(){
$('input[type=submit]', this).attr('disabled', true);
});
});
使用jQuery,這將使按鈕在瀏覽器上使用後退按鈕時不被禁用。在FF 3.5上測試。
實際上這是不正確的 - $(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
我的評論上面的一個簡短的附錄:這適用僅適用於現代瀏覽器,它會緩存整個頁面(包括腳本編輯)。因此,Erik上面的回答在發佈時可能是正確的 - 它仍然可以在IE10及更低版本中使用 - 但如果您在2017年或以後發現此答案,那麼請小心。 – Chris 2017-10-27 13:06:47
也許,你應該添加自動完成=「關閉」參數表單
<form autocomplete="off">
<input type="submit" />
</form>
對我來說,Firefox認爲「自動完成」按鈕部分的狀態是件怪事......但無論如何,感謝您提供的乾淨解決方案。順便說一句,這不僅發生在瀏覽器返回時,而且通過Ajax交換表單的新版本時。 – lawrence 2011-05-10 00:19:00
我會說這個答案應該被接受。 – 2015-06-09 07:00:07
不適用於我(Firefox 54) – 2017-07-15 10:12:35
- 1. 表單提交按鈕在ajax後保持禁用狀態
- 2. 單擊瀏覽器後退按鈕時,在頁面上禁用提交按鈕
- 3. 提交後禁用按鈕
- 4. SPA +後退按鈕+表單狀態
- 5. 自動提交單選按鈕,但保持選中狀態
- 6. 禁止提交表單按鈕提交
- 7. 禁用表單提交按鈕
- 8. Android禁用後退按鈕
- 9. 後退按鈕禁用
- 10. 禁用IE後退按鈕
- 11. 禁用表單提交按鈕,但發佈按鈕值
- 12. 用按鈕提交表單
- 13. 未按下其他按鈕時保持按鈕狀態
- 14. 在表格重置後禁用保存/提交按鈕
- 15. IOS 9.3禁用iPhone上的後退按鈕後退按鈕
- 16. 提交表單後保持單選按鈕和複選框(webMathematica)
- 17. jquery禁用提交按鈕
- 18. 如何在提交表單時使用JQuery禁用保存按鈕
- 19. 啓用/禁用基於單選按鈕提交按鈕
- 20. 在WizarDroid中禁用後退按鈕
- 21. Javafx按鈕保持「啓用」狀態
- 22. 後點擊禁用提交按鈕
- 23. jQuery提交失敗後禁用按鈕
- 24. 單擊按鈕後禁用按鈕
- 25. 提交表單用ajax,然後禁用按鈕
- 26. 永久禁用保存按鈕並提交後啓用編輯按鈕
- 27. 使用webview禁用Android中的「去」按鈕表單提交
- 28. 後退按鈕在狀態欄
- 29. 按下按鈕時提交表單值
- 30. 如果沒有單選按鈕,請禁用提交按鈕
您可以發佈您的代碼? – ryanulit 2010-01-29 21:27:46
添加一個空的卸載處理程序。原因在這個相關的問題中討論:[跨瀏覽器onload事件和後退按鈕](http://stackoverflow.com/questions/158319/cross-browser-onload-event-and-the-back-button/201406 ) – user240515 2014-08-18 05:31:43