我正在使用一些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. 提交後禁用按鈕
- 5. 在提交後禁用提交按鈕
- 6. SPA +後退按鈕+表單狀態
- 7. html表單在表單提交後保持禁用狀態
- 8. 禁用單擊表格或提交按鈕時提交表單
- 9. 保持按鈕提交表單Javascript
- 10. 自動提交單選按鈕,但保持選中狀態
- 11. 禁用提交但確保按下後退按鈕後重新啓用
- 12. 禁止提交表單按鈕提交
- 13. 禁用表單提交按鈕
- 14. 提交表單上的禁用按鈕
- 15. 表單驗證和提交後禁用「提交」按鈕。 PHP,JQ?
- 16. 使用取消按鈕單擊提交按鈕後防止表單提交
- 17. 後退按鈕禁用
- 18. 禁用後退按鈕
- 19. 禁用IE後退按鈕
- 20. Android禁用後退按鈕
- 21. Response.Redirect()禁用後退按鈕
- 22. Response.Redirect禁用後退按鈕
- 23. 禁用表單提交按鈕,但發佈按鈕值
- 24. 使用ember驗證狀態禁用/啓用表單提交按鈕
- 25. 保持狀態按鈕Android
- 26. 表單提交時禁用提交按鈕
- 27. 用按鈕提交表單
- 28. 用jQuery提交後禁用按鈕
- 29. 未按下其他按鈕時保持按鈕狀態
- 30. 禁用表單按鈕的onClick,然後提交表單
您可以發佈您的代碼? – 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