我有一个需要使用jquery启用或禁用的LinkButton(最初禁用),但似乎使用我正在使用的方法禁用按钮会删除href属性,所以当我重新启用它时,按钮看起来已启用,但它无法点击。
<asp:LinkButton Id="lbSave" runat="server" Text="Save" Enabled="False" ClientIDMode="Static" />
Disable:
$('#lbSave').attr('disabled', 'disabled');
Enable:
$('#lbSave').removeAttr('disabled');
启用/禁用LinkButtons的正确方法是什么?
答案 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 LinkButton上设置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);