ASP.NET 4.0由于网络延迟允许用户多次击中表单提交按钮,导致重复的条目,我试图使用Javascript来禁用按钮在第一次点击后直到回传。我不知道Javascript,所以我为我的无知道歉。 问题按钮是在一个页面中的一个tabcontrol内的一个窗体内的几个窗体等,所以我使用一个验证组,包含不同的验证程序关闭或打开取决于下拉选择。asp.net验证组成功后禁用JavaScript提交按钮
这里是我的按钮:
<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
}
}
我已经去了许多不同的道路,这是我已经得到最接近的一次。它适用于一种情况 - 只有在第一次点击导致验证错误时,我才能纠正错误并提交。如果没有错误,或者是由于我的下拉选择没有关联的验证器(即他们想添加一条自由文本评论记录),或者如果我第一次正确输入所有验证字段,那么它会非常快速地闪烁以禁用'请稍候...'文本然后回到启用和默认文本。如果我很快点击它很多次,它最终会禁用“Please wait ...”文本并停留在那里。
任何想法?
Try OnClientClick =“this.disabled = true; return true;” http://encosia.com/disable-a-button-control-during-postback/ –
谢谢你的链接。它促使我将UseSubmitBehavior =“False”添加到我的按钮中,从而实现了这一点。 – Dayna