ASP.NET如何在提交时禁用按钮?

时间:2010-06-22 12:04:56

标签: asp.net jquery javascript

我在ASP.NET网站上有付款的表单,当用户点击asp:Button时,他提交了几次。我想在不损害当前ASP.NET站点的情况下禁用此功能(我的意思是没有花哨的jQuery,除非它非常基本且不会干扰ASP.NET内置验证)

感谢!!!

5 个答案:

答案 0 :(得分:9)

您可以在客户端的按钮上轻松完成此操作:

onClientClick="this.disabled=true;"

你也可以使用穆罕默德的方法:

onClientClick="if(Page_ClientValidate()){this.disabled=true;}"

如果仍然无效,您可以在禁用按钮之前自行启动回发:

onClientClick="if(Page_ClientValidate()){__doPostBack;this.disabled=true;}"

答案 1 :(得分:2)

创建一个静态方法:

/// <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);

答案 2 :(得分:2)

onClientClick="if(Page_ClientValidate()){__doPostBack;this.disabled=true;}" 
UseSubmitBehavior="false" 

答案 3 :(得分:2)

我知道这是一个老问题,但在某些情况下所有答案都失败了。主要是您可能会在浏览器中收到“Page_ClientValidate未定义”错误。

这种方法确实有效:

public static void DisableSubmitButton(Button button)
{
    button.Attributes.Add("onclick", "this.disabled=true;" + button.Page.ClientScript.GetPostBackEventReference(button, String.Empty));
}

答案 4 :(得分:1)

你可以选择blockUI。 它非常好,因为它阻止了完整的ui,而不仅仅是按钮 - 这样用户就无法点击另一个按钮(例如,你想保存...需要一些时间......用户同时点击删除)< / p>