在asp.net validationgroup成功后禁用javascript中的提交按钮

时间:2015-05-05 18:49:36

标签: javascript asp.net forms validation

ASP.NET 4.0由于网络延迟允许用户多次点击表单提交按钮,导致重复的条目,我尝试使用Javascript在第一次单击后禁用按钮,直到回发。我不知道Javascript所以我为我的无知而道歉。 问题按钮是在具有多种表单的页面上的tabcontrol内的updatepanel内的一种形式,等等。所以我使用的验证组包含根据下拉选择关闭或打开的不同验证器。

这是我的按钮:

<asp:Button ID="BtnAddProd" runat="server" OnClick="BtnAddProd_Click" 
 Text="Add Status" ValidationGroup="Activity_ValControls" 
 onclientclick="disableBtnOnClick(this,'Activity_ValControls')" 
 CausesValidation="False" />

这是我的Javascript:

function disableBtnOnClick(btnName, valGroup) {
    var isGroupValid = Page_ClientValidate(valGroup);

//check if validation group is successful
if (isGroupValid) {
    //set button to disabled so you can't click on it.       
    btnName.disabled = true;
    btnName.value = 'Please wait...'
}
    else {
        alert('Page is not valid');//for testing
    }
}

我走了许多不同的道路,这是我得到的最接近的道路。它适用于一种情况 - 只有在第一次单击导致验证错误时,我才会更正错误并提交。如果没有错误,或者由于我的下拉选择没有相关的验证器(即,当他们想要添加自由文本注释记录时)或者如果我第一次正确输入所有已验证的字段,那么它很快就会闪烁到禁用“请稍候......”文字然后返回启用和默认文字。如果我然后很快点击它很多次,它最终会禁用“请稍候......”文本并保留在那里。

有什么想法吗?

2 个答案:

答案 0 :(得分:0)

如果我误解了这个问题,请原谅我。我会直接使用javascript在提交按钮上执行此操作。我有一个类似的问题,我必须在发布到服务器之前用JS操纵网站。这段代码使用了JQuery。

http://jsfiddle.net/sckyq7ta/4/

$("[type='submit']").click(function (event, args) {
if (!args) {
    event.preventDefault();

    //Do your thing
    $(this).attr("disabled", "true");
    $(this).html("Please wait..");

    //call myself with args to enable default (posting to server)
    $(this).trigger("click", {
        enableDefault: true
    });
}
});

答案 1 :(得分:0)

感谢您的回复。上面评论中的链接让我添加了UseSubmitBehavior =&#34; False&#34;到我的按钮,这就是我需要的。