Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/34.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何在单击后禁用按钮以避免多次post请求?_Javascript_Asp.net - Fatal编程技术网

Javascript 如何在单击后禁用按钮以避免多次post请求?

Javascript 如何在单击后禁用按钮以避免多次post请求?,javascript,asp.net,Javascript,Asp.net,我想在单击几秒钟后禁用服务器端asp.net按钮控件,然后触发服务器端事件。我正在尝试使用setTimeout,但如果使用setTimeout,则永远不会触发服务器端事件。有人能帮忙吗 <script type="text/javascript"> function disableBtn(btnId, dspTxt) { var btn = document.getElementById(btnId); btn.value = dspTx

我想在单击几秒钟后禁用服务器端asp.net按钮控件,然后触发服务器端事件。我正在尝试使用setTimeout,但如果使用setTimeout,则永远不会触发服务器端事件。有人能帮忙吗

   <script type="text/javascript">
    function disableBtn(btnId, dspTxt) {
        var btn = document.getElementById(btnId);
        btn.value = dspTxt;
        setTimeout(btn.disabled = true,1000);
    }
</script>

功能禁用BTN(btnId、dspTxt){
var btn=document.getElementById(btnId);
btn.value=dspTxt;
setTimeout(btn.disabled=true,1000);
}

使用jQuery怎么样

$('#buttonId').attr("disabled", true);
或者在函数中是这样的

function disableBtn(btnId, dspTxt) {
  var button = $(btnId);
  button.attr("disabled", true);
  button.text(dspTxt);
}

在表单上放置两个按钮:

<asp:Button ID="ButtonToDisable" runat="server" Text="Button" />
<asp:LinkButton ID="PostBackLinkButton" runat="server" onclick="PostBackLinkButton_Click"></asp:LinkButton>
现在只需运行页面并等待2秒钟,就会发生回发并禁用回发链接按钮


如果您不希望回发对用户可见,请将按钮放在updatepanel内。

如果我正确理解,您需要这样的功能:

 var isClicked=false;
 $('.myButton').click(function (e) {
    e=e?e:window.event;
    if(!isClicked){
        if($.browser.msie){e.cancelBubble=true; e.returnValue=false;}
      else
        e.preventDefault();
    isClicked=true;   
    $(this).attr('disabled','disabled');
    setTimeout(function(){delayClick();},1000);
  }

});
function delayClick()
{
   $(this).removeAttr('disabled');
   $('.myButton').click();

}

为什么需要在客户端禁用?您可以在btn_Click中禁用我不想使用睡眠。我只想禁用它2秒钟&fire服务器端事件。似乎disable=true会使要触发的服务器端代码无效?也许这有助于您了解设置超时的任何特殊原因?你到底想在这里实现什么?禁用服务器按钮而不通过单击另一个客户端/服务器控件进行回发?setTimeout(function(){btn.disabled=true;},1000);setTimeout必须调用一些函数,我可以禁用该按钮。我想在禁用按钮2秒钟后触发服务器端事件(在此事件中保持禁用状态)。
 var isClicked=false;
 $('.myButton').click(function (e) {
    e=e?e:window.event;
    if(!isClicked){
        if($.browser.msie){e.cancelBubble=true; e.returnValue=false;}
      else
        e.preventDefault();
    isClicked=true;   
    $(this).attr('disabled','disabled');
    setTimeout(function(){delayClick();},1000);
  }

});
function delayClick()
{
   $(this).removeAttr('disabled');
   $('.myButton').click();

}