我已經通過幾十個類似的問題在這裏搜索並試圖實現提供的解決方案,但沒有任何工作。使用瀏覽器「後退」按鈕時強制窗體按鈕重置
我在頁面上有一個表單,並且我通過添加一個onclick事件來修復不耐煩的人點擊'submit'多次的問題,這個事件調用一個javascript,將提交按鈕的文本(值)改爲「please等待「並添加一個樣式類,以便我可以將按鈕從綠色更改爲紅色。這個onclick事件在實際提交表單數據的腳本之前被觸發。很棒。
然而,表單提交後的網站訪問者的相當數量的使用瀏覽器的「返回」按鈕返回一個頁面,更改窗體上的幾個答案,並重新提交 - 這是很好的(它是一個報價,他們可以選擇幾個不同的選項來獲得不同的報價)。
所以我不想重置表單(雖然這將是一個可接受的解決方案,即使它不是理想的,因爲他們將不得不重新填寫表單),我只是想重置按鈕...因爲我現在的問題是,當他們回去時,按鈕仍然是紅色,並且仍然顯示「Please Wait」。
理想情況下,我只是想將按鈕重置回它的原始狀態。我已經嘗試了許多不同的方法(這裏和其他論壇)建議強制刷新頁面,強制重置表單,並將輸入值更改回原來的值 - 因爲問題出在使用瀏覽器上的後退按鈕是瀏覽器只是加載上一頁的緩存版本 - 沒有什麼是真正的「觸發」,並且頁面沒有真正重新加載(所以窗口onload/body onload解決方案也不工作)。
我的問題是:有沒有什麼辦法來實際強制瀏覽器當您使用後退按鈕,我可以從工作重置按鈕或做不到這一點重置的形式做一些事情?一些合理的跨瀏覽器兼容的解決方案?
更新: 爲了迴應@ jammykam的請求來看代碼,這裏是我現在如何改變按鈕(請注意,我實際上並沒有禁用/不可點擊,我只是改變文本和顏色以表明訪問者不應該繼續點擊它 - 禁用按鈕使他們無法修復錯誤,並重新點擊提交)
在我的functions.php文件中我有一個片段添加一個onclick事件到窗體(我使用重力形式,並從他們的論壇得到這個):
add_filter("gform_submit_button", "add_change_button_text", 10, 2);
function add_change_button_text($button, $form) {
$dom = new DOMDocument();
$dom->loadHTML($button);
$input = $dom->getElementsByTagName('input')->item(0);
if ($input->hasAttribute('onclick')) {
$input->setAttribute("onclick","changebtn();".$input->getAttribute("onclick"));
} else {
$input->setAttribute("onclick","changebtn();");
}
return $dom->saveHtml();
}
然後在我的header.php文件中我有這個代碼c hanges按鈕文本,並添加了類,所以我可以改變按鈕顏色:
function changebtn() {
var button = $("input[type='submit']");
if (button.val() == "Free Quote") {
button.val("Please Wait");
button.addClass("plswait');
} else {
button.val("Free Quote");
}
}
因此,正如我所說,這個偉大工程,改變了按鈕,阻止了我們先前得到... ..我的多次點擊當有人使用「返回」按鈕時,無法將其改回。
不能添加一個onload事件,將設置你想要的方式?所以每次頁面加載時都會設置爲綠色並提交。 – WreithKassan
發佈你如何停止點擊提交按鈕的代碼 – jammykam
你不能只啓用/禁用按鈕?無論如何,表單可能仍然可以在大多數瀏覽器中使用回車鍵提交。 – RobG