ASP.NET linkbutton enabled=false在Firefox中不起作用
本文关键字:Firefox 不起作用 false NET linkbutton enabled ASP | 更新日期: 2023-09-27 18:18:24
我想禁用ASP。净 linkbutton
。我想要的是一个解决方案,浏览器不会让我点击链接按钮,或者至少在相关的操作没有执行。
我使用WebForms
对HTML标记执行以下操作:
<asp:LinkButton
id="link1"
text="Some button"
runat="server"
Enabled ="false"
/>
我使用jQuery事件触发链接按钮动作:
$('#link1').click(function (evt) {
// Do something here
return false;
});
- 在IE8中被禁用并且不允许点击
- 在Chrome中,它没有被禁用,但id不允许点击 在Firefox 41.0.1中,我仍然可以点击链接按钮并执行操作。
如果我在后面的代码中禁用它,结果是一样的:
this.link1.Enabled = false;
禁用链接按钮并不会阻止它被点击。在我的测试中,禁用的链接按钮呈现如下:
<a class="aspNetDisabled">test</a>
jQuery会很高兴地将一个click事件附加到锚标记上。您需要阻止事件触发,或者更改代码,以便仅在启用按钮时执行您的操作。
这里有一个可能的解决方案,只有当按钮被启用时才会执行你的js:
$('#link1').click(function (evt) {
if('<%=link1.Enabled%>' === 'True') {
// Do something here
}
return false;
});
即使客户端触发disabled按钮,if语句也会导致Do something here
不运行
目前尚不清楚是否在您的简化中错过了它,但似乎您的jQuery不会因按钮的客户端ID的更改而执行。您需要执行以下操作之一:
设置ClientIDMode
为static
在您的控制…
确保id
在客户端代码中保持为link1
。
<asp:LinkButton
id="link1"
text="Some button"
runat="server"
Enabled ="false"
ClientIDMode="static"
/>
或者,在jQuery运行时获取控件的ID…
虽然这只会工作,如果你的jQuery是在同一个web表单页面,而不是外部的JS。
$('#<%= link1.ClientID %>').click(function (evt) {
// Do something here
return false;
});
如果链接正确,你可以使用jQuery的preventDefault()方法来禁用post back触发。
$('#link1').click(function (evt) {
evt.preventDefault();
// Do something here
});