$(function () {
$("#btnSend").click(function () {
var $btn = $("#btnSend");
setTimeout(function () {
$btn.prop("disabled", true);
$("#lblMsg").text("處理中,請稍候...");
}, 10);
});
});
</script>
>
2).
<%@ Page Language="C#" %>
3).
排版顯示純文字複製文字
$(function () { $("#form1").submit(function() { $("#lblMsg").text("處理中,請稍候..."); $("#btnSend").prop("disabled", true); });});
================================================================================================================
原本直覺的想法是從"onclick事件完成"到"表單真正.submit()之前",還存在被插入其他程式邏輯的空間,不想在onclick中直接呼叫form.submit()是怕破壞原有的執行順序...!!!
在絕大多數的情境下這層顧慮是多餘的,同意在onclick中直接呼叫.submit()更簡單**
>/
>
>
);
}
}
=======================================================================================================================有個ASP.NET WebForm網頁,因PostBack後的處理邏輯頗為耗時,為防止使用者不耐久侯重複按下送出鈕**
加了幾行簡單的jQuery,在送出鈕的Click事件裡設定disabled屬性停用按鈕,再順便顯示"處理中,請稍侯..."請使用者稍安勿躁。其運作如以下範例所示: (PostBack時利用Thread.Sleep 3秒模擬長時間執行)
<%@ Page Language="C#" %>
================================================================================================================
跨瀏覽器**Submit鈕
Click事件設定disabled~~的行為各異常***/
IE9測得很開心後交付程式,使用者測試時卻回報按鈕後網頁一直顯示處理中,久久無動靜。經對照測試環境並觀察網路封包,這才發現此寫法在IE7/8(或IE9開相容模式時)會因Submit鈕被disabled而取消Post表單的行為,換句話說,HTML表單永遠不會被傳送到後端。
另外再測試了Chrome及Firefox,很有趣,Chrome跟IE8一樣會因此取消 送出,Firefox則跟IE9一樣可以正常運作。(IE9表示: 謝謝你,Firefox,不然我又要被大噹特噹了~)
無論如何,這個跨瀏覽器問題還是要解決,祭出setTimeout大法,將設定disabled的時機延到Click事件完成後,問題就排除囉
=============================================================================================================