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;

ASP.NET linkbutton enabled=false在Firefox中不起作用

禁用链接按钮并不会阻止它被点击。在我的测试中,禁用的链接按钮呈现如下:

<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的更改而执行。您需要执行以下操作之一:

设置ClientIDModestatic在您的控制…

确保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
});