使用jquery切换LinkBut​​ton的启用/禁用状态

时间:2012-10-31 17:09:28

标签: javascript jquery asp.net .net html

我有一个需要使用jquery启用或禁用的LinkBut​​ton(最初禁用),但似乎使用我正在使用的方法禁用按钮会删除href属性,所以当我重新启用它时,按钮看起来已启用,但它无法点击。

<asp:LinkButton Id="lbSave" runat="server" Text="Save" Enabled="False" ClientIDMode="Static" />

Disable:
$('#lbSave').attr('disabled', 'disabled');

Enable:
$('#lbSave').removeAttr('disabled');

启用/禁用LinkBut​​tons的正确方法是什么?

4 个答案:

答案 0 :(得分:5)

问题是客户端浏览器中控件的ID是而不是 lbSave,但WebForms会将其变成ctl00_nameofanynestedaspnetcontainercontrols_morenestedcontainernames_lbSave.

之类的内容

Praveen建议的解决方法是,不要试图通过id找到控件,而是给它一个唯一的类名 - webforms不会破坏 - 并且解决了问题。

另一种方法是让asp.net在你的标记中插入正确的id:

启用: $('#&lt;%= lbSave.ClientID %&gt; ')。attr('disabled','');

禁用: $('#&lt;%= lbSave.ClientID %&gt; ')。removeAttr('disabled');

(如果您使用的是Asp.Net 4 WebForms,则此页面http://weblogs.asp.net/scottgu/archive/2010/03/30/cleaner-html-markup-with-asp-net-4-web-forms-client-ids-vs-2010-and-net-4-0-series.aspx为您提供了另一种更简单的解决方案。)

但如果你在Asp.Net 4上做新项目,你真的很想使用Asp.Net MVC,所有这些问题都会消失。

答案 1 :(得分:2)

您可以执行以下操作:

<asp:LinkButton Id="lbSave" runat="server" Text="Save" Enabled="False" CssClass="lbSave" />

禁用:

$(".lbSave").attr("disabled", "disabled");

启用:

$(".lbSave").removeAttr("disabled");

希望这有助于!!

答案 2 :(得分:1)

尝试此链接disable a hyperlink using jQuery

所以你可以试试

$('#&lt;%= lbSave.ClientID%&gt;')。bind('click',false);

启用

$('#&lt;%= lbSave.ClientID%&gt;')。unbind('click',false);

答案 3 :(得分:0)

在ASP.NET LinkBut​​ton上设置Enabled = False会删除href属性,因此jquery永远无法启用它。所以这是一个适合我的解决方案:

In javascript:
$(document).ready(function() {
  _href = $('#lbSave').attr('href');
  $('#lbSave').attr('disabled', 'disabled');
  $('#lbSave').removeAttr('href');
});

Disable:
$('#lbSave').attr('disabled', 'disabled');
$('#lbSave').removeAttr('href');

Enable:
$('#lbSave').removeAttr('disabled');
$('#lbSave').attr('href', _href);