我正在尝试禁用一个按钮 - 在IE中使用jQuery 1.4.4以下代码
jQuery('#id').attr("disabled", true);
使用
的HTML<button id="id" type="button"
class="some-class"
disabled="">Comment</button>
适用于FF,Chrome等,当然,在IE中不起作用?我该怎么办?
即。 <button disabled="disabled">
似乎不适用于IE或?
修改:另请注意<button id='id' disabled>foobar</button>
是有效的HTML
答案 0 :(得分:16)
XML / HTML属性值是字符串。值“true”和“false”have no special meaning (technically, they aren't even allowed)。惯例是将值设置为属性名称:
jQuery('#id').attr("disabled", "disabled");
另请注意,在您的HTML中,<button disabled="">
已经停用该按钮。只需省略disabled
属性或使用jQuery重新启用它:
jQuery('#id').removeAttr("disabled");
答案 1 :(得分:1)
我在IE8中遇到了相同的问题,并且能够解决它们,所以我想加分了几点。 phihag提供的解决方案既对与错。确实,XML / HTML不会接受真正的布尔值作为属性 - 但我们在讨论jQuery语法,这里接受布尔值作为参数,并适当地设置属性。
通过禁用和启用输入元素,在IE中,我发现一致的工作就是直接在X / HTML中不“硬编码”初始所需值。如果要从初始渲染中禁用控件,则最好在呈现页面时立即调用函数,以禁用它。也许有点像kludge,就像许多事情一样,它不应该那样,但那就是最终为我工作的东西。非常简单。
希望有人帮助。我经历了很多调试工作,以确定一个。
答案 2 :(得分:0)
尝试:
jQuery('#id').attr("disabled", "disabled");
属性值应该是字符串,而不是布尔值
答案 3 :(得分:0)
只是为这里发布的其他答案添加一些额外的价值。
我认为你的措辞有点偏离,看起来,你想知道如何禁用和重新启用按钮跨浏览器。
disabled
属性(如果存在)应该始终禁用该元素,无论它的值是什么。建议值为disabled="disabled"
。
$('#id').attr("disabled", "disabled")
为了重新启用该元素,您需要完全删除disabled
attrbitute(如其他答案所述)。
$('#id').removeAttr('disabled');
答案 4 :(得分:0)
$( ".selector" ).button( "option", "disabled", true );
即使在使用JQuery UI 1.8.14或更高版本的IE 8中,它也适用于我。在旧版本中,即使在禁用按钮上也会触发单击事件。因此,在这种情况下,您必须评估按钮的禁用并取消事件:
function clickHandler(event) {
if ($(event.currentTarget).button("option", "disabled")) {
return false;
}
// other handle stuff...
}