一尘不染

OnclientClick和OnClick不能同时工作?

c#

我有一个类似以下的按钮,

<asp:Button ID="pagerLeftButton" runat="server" OnClientClick="disable(this)" onclick="pager_Left_Click" Text="<" />

当我这样使用按钮时,onclick不会触发。当我删除OnClientClick时,就会触发onclick。

我需要做的是,在回发期间禁用该按钮,并在回发结束后启用它。

编辑:附加信息:

我在我的触发函数中添加了断点,这是c#部分,我正在调试,但不能确定它们是否触发。这些功能就像

protected void pager_Left_Click(object sender, EventArgs e)
{
//Do smthing.
}
protected void pager_Right_Click(object sender, EventArgs e)
{
//Do smthing.
}

当我单击我的按钮时,它会被禁用1-2秒并自动启用,但是我不确定为什么启用了它。我没有添加任何部分以使其再次启用。


阅读 384

收藏
2020-05-19

共1个答案

一尘不染

来自web.archive.org上的这篇文章

诀窍是使用按钮控件的OnClientClick和UseSubmitBehavior属性。还有其他方法,包括在服务器端添加属性的代码,但是我认为以这种方式进行的简单性更具吸引力:

<asp:Button runat="server" ID="BtnSubmit"  OnClientClick="this.disabled

= true; this.value = ‘Submitting…’;” UseSubmitBehavior=”false”
OnClick=”BtnSubmit_Click” Text=”Submit Me!” />

OnClientClick允许您添加客户端OnClick脚本。在这种情况下,JavaScript将禁用button元素并将其文本值更改为进度消息。回发完成后,新呈现的页面将把按钮还原回其初始状态,而无需进行任何其他工作。

禁用客户端上的提交按钮的一个陷阱是它将取消浏览器的提交,并因此取消回发。将UseSubmitBehavior属性设置为false可以指示.NET注入必要的客户端脚本以无论如何触发回发,而不是依赖于浏览器的表单提交行为。在这种情况下,它注入的代码将是:

__doPostBack('BtnSubmit','')

这被添加到我们的OnClientClick代码的末尾,为我们提供了呈现的HTML:

<input type="button" name="BtnSubmit"  onclick="this.disabled = true;

this.value =’Submitting…’;__doPostBack(‘BtnSubmit’,’‘)” value=”Submit
Me!” id=”BtnSubmit” />

在回发完成时,这将提供不错的按钮禁用效果并处理文本。

2020-05-19