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