我在ASP.NET網站有付款方式,當用戶點擊asp:Button時,他有時會提交幾次。我想禁用此功能而不損害當前的ASP.NET網站(我的意思是沒有花哨的jQuery,除非它是非常基本的,不會干擾ASP.NET內置驗證)ASP.NET如何禁用按鈕提交?
謝謝!
我在ASP.NET網站有付款方式,當用戶點擊asp:Button時,他有時會提交幾次。我想禁用此功能而不損害當前的ASP.NET網站(我的意思是沒有花哨的jQuery,除非它是非常基本的,不會干擾ASP.NET內置驗證)ASP.NET如何禁用按鈕提交?
謝謝!
您可以輕鬆地做到這一點在客戶端上的按鈕:
onClientClick="this.disabled=true;"
您也可以使用從穆罕默德的做法與此:
onClientClick="if(Page_ClientValidate()){this.disabled=true;}"
如果這仍然沒有工作,你可以禁用按鈕之前自行發起回發:
onClientClick="if(Page_ClientValidate()){__doPostBack;this.disabled=true;}"
您可能會去blockUI。 這真的很不錯,因爲它阻止了完整的用戶界面,不僅僅是按鈕 - 使用戶無法點擊另一個按鈕(例如,您想保存...需要一些時間...用戶同時點擊刪除)
該方法的問題是。有兩件事ASP:按鈕。 1.使用ASP.NET驗證器進行JS驗證。 2.Triggering OnClick =「」 這個腳本可以在客戶端執行,因此會失敗JS驗證。 – eugeneK 2010-06-23 06:47:43
1.我不認爲,這將是一個問題。您可以重新驗證客戶端驗證功能並在驗證無誤後執行阻塞。 2.爲了上帝的緣故,你可以在客戶端觸發一個服務器事件?總結:您應該提供更多信息和一些代碼(code-behind&markup&final html)。順便提一下 – 2010-06-23 07:17:59
- 還有另一種方法:爲什麼不重新編寫表單的提交處理程序。如果表單由最後一個實例提交(例如,您的客戶端驗證),您可以阻止ui,對不對? – 2010-06-23 07:18:33
創建靜態方法:
/// <summary>
/// Disable the button on submit. Remember to set up the validationGroup property if there is more than one form/submit
/// </summary>
/// <param name="objButton">The submit button object</param>
public static void disableSubmitButton(Button objButton)
{
objButton.CausesValidation = false;
string validationGroup = objButton.ValidationGroup;
if (string.IsNullOrEmpty(validationGroup))
objButton.Attributes.Add("onclick", "if (Page_ClientValidate()) {this.value=\"Processing...\";this.disabled=true;" + objButton.Page.ClientScript.GetPostBackEventReference(objButton, "").ToString() + "}");
else
objButton.Attributes.Add("onclick", "if (Page_ClientValidate(\"" + validationGroup + "\")) {this.value=\"Processing...\";this.disabled=true;" + objButton.Page.ClientScript.GetPostBackEventReference(objButton, "").ToString() + "}");
}
創建一個表單,並把一個按鈕在你的表格(記得設置的ValidationGroup屬性,如果有一個以上的表格/提交):
<asp:Button runat="server" ID="btnSubmit" OnClick="btnSubmit_Click" />
打電話給我們頁面加載:
CommonFunctions.disableSubmitButton(btnSubmit);
onClientClick="if(Page_ClientValidate()){__doPostBack;this.disabled=true;}"
UseSubmitBehavior="false"
我知道這是一個老問題,但所有的答案在某些情況下失敗。主要是你冒險在瀏覽器中出現「Page_ClientValidate is not defined」錯誤。
這種方法確實可行:
public static void DisableSubmitButton(Button button)
{
button.Attributes.Add("onclick", "this.disabled=true;" + button.Page.ClientScript.GetPostBackEventReference(button, String.Empty));
}
其他答案沒有在我的情況下工作,但這沒有問題。謝謝。 – 2013-03-14 17:30:07
你希望它永遠後被禁用先點擊? – Samiksha 2010-06-22 12:10:48
@Samiksha,我需要在表單提交後禁用,因爲如果我第一次點擊後禁用它,它被禁用,一旦我點擊驗證數據與ASP.NET驗證。 – eugeneK 2010-06-22 14:18:40
我有更新我的答案,請現在檢查。你需要做的,禁用按鈕之前,你需要檢查Page_ClientValidate() – 2010-06-22 15:04:00