点击后禁用按钮功能

问题描述:

我有约150页的保存按钮。当用户点击保存按钮时,我应该在点击后禁用按钮。这样用户不会再次点击保存按钮。点击后禁用按钮功能

protected void Button1_Click(object sender, EventArgs e) 
    { 
     // right now once the user clicks the save button 
     Button1.Enabled = "false" 

    } 

现在我正在这样做。有没有更好的解决方案可以让我在这里改进编码会很棒。

谢谢

+0

您认为目前的解决方案有什么问题? – pmarflee 2009-10-17 19:02:53

您也可以尝试通过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”,但你可以找到你自己的方式来选择按钮。

干杯!

+0

@Gus:如果您发布的代码与您的jQuery代码片段相同,请确保突出显示这些代码行,然后单击编辑器工具栏上的“代码”按钮(010 101)或在键盘上按Ctrl-K以整齐地将其格式化为代码。然后,只有这样才能突出语法和全部。 – 2009-10-17 21:19:30

+0

嗨Gus, 感谢您的重播,如果我在母版页上使用上面的代码。 intally按钮的点击过程中应该得到的前 尝试 {公共无效保存功能(){ // 这里所有的保存按钮应被禁用 } 赶上(例外五){ 扔 Ë; } 终于 {// 这里我保存按钮应该启用 //最后我保存按钮应该得到使这里 }} – happysmile 2009-10-26 09:12:28

+0

@marc_s何时该按钮保持原来的状态(即)使能状态.. – 2010-09-04 11:33:24

连接的javascript禁用按钮后,用户点击将是最简单的方法这个(在页面onLoad事件):

myButton.Attributes.Add("onclick", " this.disabled = true; " + ClientScript.GetPostBackEventReference(btnSave, null) + ";"); 

但如果按钮被重复的许多页面上,你也许可以创建嵌套母版页将保存按钮放在那里,或者从实现此禁用功能的类继承页面。此外,您可以“扫描”您想要在点击后禁用的控件!