在Button的Click事件上,ow可以禁用按钮,还可以调用其事件处理程序?单击按钮:禁用并执行按钮的处理程序
我已经试过这样:
protected void Button1_Click(object sender, EventArgs e)
{
Button1.Enabled = false;
}
这并不在IE,Mozilla或Chrome浏览器。
在Button的Click事件上,ow可以禁用按钮,还可以调用其事件处理程序?单击按钮:禁用并执行按钮的处理程序
我已经试过这样:
protected void Button1_Click(object sender, EventArgs e)
{
Button1.Enabled = false;
}
这并不在IE,Mozilla或Chrome浏览器。
<asp:Button ... OnClientClick="disableButton(this);" />
<script type="text/javascript">
function disableButton(button)
{
//need to delay a few ms so that the button posts back before being disabled
var buttonToDisable = button;
setTimeout("reallyDisableButton()"), 2);
}
function reallyDisableButton()
{
buttonToDisable.disabled = true;
}
</script>
我认为你的问题是,人们在点击一个按钮几次(因为页面是采取一段时间来加载),从而拉开事件几次,你只希望他们能够做到它曾经。这会在回发后禁用按钮,防止意外发送多个并发回发。
...或者取消对延迟,你可以先禁用按钮,然后调用'__doPostBack('Button1','');'你自己后跟'e.preventDefault();'以防止原始回发。 – 2012-04-25 16:09:45
@Scott这不像用户会看到延迟;它对他们来说似乎是即时的。 – Servy 2012-04-25 16:16:26
我明白这一点。简单地说,我喜欢控制什么时候事情发生。让它延迟以允许完成默认机制来触发回发的功能,并不是最受控制的解决方案。我觉得自己可以更好地控制它,这样它会触发回发,并且因为我告诉它而取消默认功能。再次,这只是一个控制偏好的事情。 – 2012-04-25 16:21:56
你可以尝试添加此:
protected void Button1_Click(object sender, EventArgs e)
{
// Do some stuff here
Button1.Attributes.Add("onclick", "javascript:return false;");
Button1.Enabled = false;
}
请做在客户端只** **。 – gdoron 2012-04-25 15:51:23
编辑你的问题,确切地说明你想要发生什么。您在此处发布的代码确实会在代码返回时禁用该按钮,以及该方法中运行的其他任何代码。 – 2012-04-25 15:53:41
通过JavaScript做到这一点 - 它更简单,基于客户端的工作,而不是服务器(如果1000/10000/100000用户执行相同的操作,该怎么办?) – 2012-04-25 15:58:47