繁体   English   中英

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

[英]ASP.NET linkbutton enabled=false does not work in Firefox

我想禁用ASP.NET 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;

不清楚您是否简化了它,但是由于按钮的客户端ID的更改,看来您的jQuery无法执行。 您将需要执行以下任一操作:

在控件上将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()方法禁用回发触发。

$('#link1').click(function (evt) {
    evt.preventDefault();
    // Do something here
});

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

<a class="aspNetDisabled">test</a>

jQuery将愉快地将click事件附加到该锚标记。 您需要防止事件触发或更改代码,以便仅在启用按钮后才执行您的操作。

这是一个可能的解决方法,仅在启用该按钮后才会执行您的js:

$('#link1').click(function (evt) {
    if('<%=link1.Enabled%>' === 'True') {
      // Do something here
    }
    return false;
});

即使客户端触发了禁用按钮,if语句也会导致Do something here执行操作”无法运行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM