【发布时间】:2009-08-13 20:24:25
【问题描述】:
我试图阻止用户双击我正在更新的页面的提交按钮。问题是必须进行服务器端验证以确定用户是否必须在我们继续之前进行任何更新。我目前在我的表单提交事件中有以下代码。
<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 属性设置为无。然后我使用了隐藏提交按钮并在 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");
【问题讨论】:
-
所以 SubmitPayment.Attributes.Add("disabled", "true");或 SubmitPayment.Attributes.Remove("disabled", "false");不做这项工作?你有一个奇怪的问题。对于双击所有内容的白痴该怎么办(诚然,这不是他们的错,而是桌面界面设计师的错)。
标签: asp.net asp.net-2.0