IE6限制按钮点击一次

问题描述:

* IE6限制按钮点击一次。 *
我有一个按钮,应该单击一次,并且在第一次单击时,我需要运行几个后端逻辑(操作),例如在数据库中保存一些数据,发送电子邮件,执行一些日志记录,以及之后我需要将这些操作的成功重定向到其他页面。 但我的按钮的单击事件后使用IE6限制按钮点击一次

btnMakeFO.Visible = false ;

,用户仍然可以点击次数不要超过两次。
我也用了:

btnMakeFO.Enabled = false ;

,但它不是工作压力太大。

我也用下面的按钮的(btnMakeFO_Click)Click事件处理程序:

btnMakeFO.Attributes.Add("onclick", "this.disabled=true;" + Page.ClientScript.GetPostBackEventReference(btnMakeFO, "").ToString()); 

...我已经寻找关于这个问题有很多,但我无法找到定制我的问题的解决方案。
注意:我正在开发Windows 7 x-64位机器和IE8,这里按钮最多点击两次。在FireFox8中,它只被点击一次。
但是在生产环境中有Windows 2003 Server,Internet Explorer 6,在这个服务器上,按钮甚至可以被点击两次以上,即btnMakeFO按钮可以连续点击10到15次左右。
(生产服务器上的Internet Explorer 6无法升级,因为较少的旧版应用程序在新版Internet Explorer中无法正常运行。)
我需要在明天之前尽早解决此问题。请尽早帮助我解决这个问题。

顺便说一句我已经使用了以下(我从Code Project找到),它工作得非常好,我对这个解决方案很满意。

<asp:Button OnClick="btnMakeFO_Click" OnClientClick="clickOnce(this, 'ABC...')"> 

<script type="text/javascript"> 
function clickOnce(btn, msg) 
{ 
    // Test if we are doing a validation 
    if (typeof(Page_ClientValidate) == 'function') 
    { 
     // if we are doing a validation, return if it's false 
     if (Page_ClientValidate() == false) 
     { 
      return false; 
     } 
    } 

    // Ensure that the button is not of type "submit" 
    if (btn.getAttribute('type') == 'button') 
    { 
     // The msg attibute is absolutely optional 
     // msg will be the text of the button while it's disabled 
     if (!msg || (msg='undefined')) 
     { 
      msg = 'Saving.......'; 
     } 
     btn.value = msg; 
     // The magic :D 
     btn.disabled = true; 
    } 
    return true; 
} 
</script> 

javascript方法应该工作。

您正在从服务器端注入代码,这可能具有挑战性。在浏览器中运行应用程序和查看源代码时,您仍然应该能够看到结果。您应该看到JavaScript中的标签,就像这样:

<input type="submit" value="Submit" onclick="this.disabled=true" /> 

对于ASP.Net,您也可以尝试,而不是从你的页面代码 - 它注入了OnClientClick的事件,你可以直接添加到HTML,背后。