在IE6,IE7,IE8中禁用按钮?

时间:2011-07-05 15:32:42

标签: jquery html button

我正在尝试禁用一个按钮 - 在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

5 个答案:

答案 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)

这是JQuery API documentation

$( ".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...
}