我试图防止用户双击要更新的页面的“提交”按钮。问题在于必须进行服务器端验证,以确定用户是否必须进行任何更新才能继续。目前,我的表单提交事件中包含以下代码。
<asp:Button ID="SubmitPayment" runat="server" OnClientClick="this.disabled='true';" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" />
这成为问题的地方是页面未通过验证。在这种情况下,我尝试启用按钮的所有操作均失败。在禁用“提交”按钮的情况下,他们很难重新提交更正的信息。在验证结束时,我尝试了以下两种方法来重新启用它。
SubmitPayment.Enabled = true;
SubmitPayment.Attributes.Add("disabled", "false);
我必须怎么做才能重新启用此控件?这是在Visual Studio 2005中。在此先感谢。
-编辑-
我使用的方法如下。我添加了一个额外的诱饵按钮,该按钮已被禁用,并且显示css属性设置为none。然后,我使用了将隐藏“提交”按钮并在OnClientClick事件中显示诱饵按钮的javascript。最后,服务器端方法的结尾将更新按钮上的css属性,以在以后隐藏和显示它们。
代码段如下。再次感谢您的帮助
function PreventDoubleClick()
{
var sp = document.getElementById("SubmitPayment");
var db = document.getElementById("DecoyButton");
sp.style.display = "none";
db.style.display = "inline";
}
<asp:Button ID="SubmitPayment" runat="server" OnClientClick="javascript:PreventDoubleClick();" UseSubmitBehavior="false" OnClick="SubmitPayment_Click" Text="Submit" />
<asp:Button ID="DecoyButton" Enabled="false" runat="server" style="display:none;" Text="Please Wait..."/>
DecoyButton.Style.Add("display", "none");
SubmitPayment.Style.Add("display", "inline");
最佳答案
之前我也遇到过类似的问题,而我想出的最佳解决方案是隐藏按钮,并用一个请稍候(或验证)的消息替换它。如果验证失败,则可以再次显示该按钮
关于asp.net - 通过服务器端验证防止双击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1274361/