1

我有一个需要使用 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

4 回答 4

5

问题是客户端浏览器中控件的 id不是 lbSave,但 WebForms 会将其修改为类似ctl00_nameofanynestedaspnetcontainercontrols_morenestedcontainernames_lbSave.

Praveen 建议的解决方法是,不要尝试通过 id 查找控件,而是给它一个唯一的类名 - 网络表单不会破坏 - 瞧,问题就解决了。

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

启用: $('# <%= lbSave.ClientID %> ').attr('disabled', '');

禁用: $('# <%= lbSave.ClientID %> ').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,所有这些问题都会消失。

于 2012-10-31T17:23:08.020 回答
2

您可以执行以下操作:

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

禁用:

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

使能够:

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

希望这可以帮助!!

于 2012-10-31T17:13:41.403 回答
2

试试这个链接 使用 jQuery 禁用超链接

所以你可以试试

$('#<%= lbSave.ClientID %>').bind('click', false);

启用

$('#<%= lbSave.ClientID %>').unbind('click', false);

于 2012-10-31T17:16:37.127 回答
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);
于 2012-10-31T17:54:23.317 回答