所以我們有很多表單在我們的網站周圍,不幸需要一段時間才能提交。提交表單並用進度指示器替換提交按鈕
我想要做的是編寫一個通用腳本,在提交按鈕或onclick上提交按鈕將替換提交按鈕加載指示器,然後提交表單,遵循表單提交操作的任何重定向。
如果我使用jQuery替換表單提交上的按鈕,它不會替換提交按鈕,但仍提交表單。決定在.click()上執行此操作,並導致加載指示符替換提交按鈕,但表單不提交。還試圖替換提交按鈕,然後把一個setTimeout並使提交按鈕的父提交與jQuery的submit()函數,都沒有用。
我也走了AJAX提交的道路等等,但每個都表現出它自己的問題。
目前我的代碼是:
$("#content form :submit").click(function(data) {
$(this).replaceWith('<img src="loader.gif" alt="submitting form" style="display:block; margin:0 auto">');
var form = $(this).parent("form");
setTimeout(function() {
console.log(form);
form.submit();
},1000);
});
我知道這個當前的代碼是錯誤的,但我已經通過很多不同的解決方案,得到它的90%,我已經有點失去了它了。有關如何做到這一點的任何建議?
編輯:對不起,我不認爲這是明顯的,當我第一次提交。提交時,DOM不會再在Safari上更新至少。雖然動作發生,但DOM不會發生變化併發生提交。結果是表單像往常一樣提交,加載gif不會發生。我認爲延遲實際的表單提交,直到DOM已更新將修復它,但它似乎並沒有提交(1000長,但希望事情工作第一)。另外,如果我將偵聽器放在提交而不是點擊並嘗試調用submit(),它將導致無限循環。
似乎遞歸調用'submit'和'的preventDefault()''相同處理submit'內 – charlietfl
爲什麼使用超時?另外,'event'應該是基於你的參數的'e'。 –
@charlietfl:固定。在jQuery對象上調用'submit()'會觸發'submit'處理器,但是在DOM對象上調用'submit()'不會:http://jsfiddle.net/kTt2T/1/ – Blender