Javascript 如何在单击后禁用按钮以避免多次post请求?
我想在单击几秒钟后禁用服务器端asp.net按钮控件,然后触发服务器端事件。我正在尝试使用setTimeout,但如果使用setTimeout,则永远不会触发服务器端事件。有人能帮忙吗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
<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();
}