点击后禁用按钮功能
我有约150页的保存按钮。当用户点击保存按钮时,我应该在点击后禁用按钮。这样用户不会再次点击保存按钮。点击后禁用按钮功能
protected void Button1_Click(object sender, EventArgs e)
{
// right now once the user clicks the save button
Button1.Enabled = "false"
}
现在我正在这样做。有没有更好的解决方案可以让我在这里改进编码会很棒。
谢谢
您也可以尝试通过Javascript禁用它。
你需要做的是使用一些JavaScript,并在客户端单击时禁用它。
点击事件在回发时触发。
在允许页面继续回发之前,您需要使用JavaScript来修改链接,以防止将来点击处理。一个天真的尝试是,
<asp:LinkButton runat="server" id="button" OnClientClick="this.href='#'">
Click - doesn't quite work
</asp>
这成功地避免连续点击触发从回发,但它也可以防止第一次点击从触发回发。需要多一点逻辑才能使其正常工作。在代码隐藏中,我抓取了实际的回发JavaScript代码片段并将其用于某些逻辑。
protected void Page_PreRender(object sender, EventArgs e)
{
button1.OnClientClick = string.Format(
"if(this.getAttribute('disabled')) return false; {0}; this.setAttribute('disabled','disabled'); return false;",
Page.ClientScript.GetPostBackEventReference(button1, null));
}
在HTML模板:
<asp:LinkButton runat="server" id="button" >
Click - does not allow multiple postbacks
</asp>
你可以用一些CSS美化这个了,在这一点上我会建议包括jQuery的,所以你的代码更简洁(由于其命令链接)。
我认为最好的选择是使用javascript。如果您使用的是jQuery(我甚至可以开始推荐),那么您可以将JavaScript放在您的母版页中。你只需要找到一种方法来为你的保存按钮创建一个选择器。就像这样:
$(document).ready(function(){
$('.saveButton').bind("click", function(e) {
$(this).attr("disabled", "true");
return true; //causes the client side script to run.
});
});
在这个例子中,我认为所有的保存按钮将有CSS类“.saveButton”,但你可以找到你自己的方式来选择按钮。
干杯!
@Gus:如果您发布的代码与您的jQuery代码片段相同,请确保突出显示这些代码行,然后单击编辑器工具栏上的“代码”按钮(010 101)或在键盘上按Ctrl-K以整齐地将其格式化为代码。然后,只有这样才能突出语法和全部。 – 2009-10-17 21:19:30
嗨Gus, 感谢您的重播,如果我在母版页上使用上面的代码。 intally按钮的点击过程中应该得到的前 尝试 {公共无效保存功能(){ // 这里所有的保存按钮应被禁用 } 赶上(例外五){ 扔 Ë; } 终于 {// 这里我保存按钮应该启用 //最后我保存按钮应该得到使这里 }} – happysmile 2009-10-26 09:12:28
@marc_s何时该按钮保持原来的状态(即)使能状态.. – 2010-09-04 11:33:24
连接的javascript禁用按钮后,用户点击将是最简单的方法这个(在页面onLoad事件):
myButton.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(btnSave, null) + ";");
但如果按钮被重复的许多页面上,你也许可以创建嵌套母版页将保存按钮放在那里,或者从实现此禁用功能的类继承页面。此外,您可以“扫描”您想要在点击后禁用的控件!
您认为目前的解决方案有什么问题? – pmarflee 2009-10-17 19:02:53