jQuery .attr(“禁用”,“已禁用”)无法在Chrome中运行

时间:2011-05-18 16:34:20

标签: jquery google-chrome cross-browser attr jquery-attributes

不确定为什么这不起作用。

当人们点击我的应用程序的“编辑”按钮时,禁用的文本字段将变为可编辑状态:

$("#bewerken").click(function(e)    {
    $("input[disabled='disabled']").removeAttr('disabled');
});

然后我想在用户保存时再次禁用文本字段;我将此代码绑定到我的保存按钮:

$("#save_school_changes").click(function(e) {
    //stuff

    $.ajax({
        type: "POST",
        url: "/school/save_changes",
        data: { //stuff },
        success: function(data)
        {
            $("#feedback_top").html("<p>" + data['message'] + "</p>").slideDown('slow').delay(2000).slideUp();
            $("input[type='text']").attr('disabled', 'disabled');

        }
    });

    e.preventDefault();
});

据我所知,这应该再次禁用文本字段。但是,这似乎不适用于Chrome。它在Firefox中有效。我还没有机会在IE或Safari中测试。有什么方法可以在Chrome中使用它吗?非常感谢!

9 个答案:

答案 0 :(得分:75)

如果你正在使用jQuery&lt; 1.6 这样做:

jQuery("input[type='text']").attr("disabled", 'disabled');

如果您使用的是jQuery 1.6 +:

jQuery("input[type='text']").prop("disabled", true);

请参阅此问题:.prop() vs .attr()以获取参考原因。

或者你可以试试这个:

$('input:text').attr("disabled", 'disabled');

see here for info on :text

答案 1 :(得分:3)

对我来说,这些答案都没有奏效,但我终于找到了一个有效的答案。

我需要这个用于IE -

$('input:text').attr("disabled", 'disabled');

我还必须为Chrome和Firefox添加此功能 -

$('input:text').AddClass("notactive");

和 -

<style type="text/css">
    .notactive {
        pointer-events: none;
        cursor: default;
    }
 </style>

答案 2 :(得分:2)

这是一个老帖子,但我没有这个解决方案对我有用,所以如果有人觉得这有用,我会发布我的解决方案。

我遇到了同样的问题。

在我的情况下,我需要禁用的控件是带有子下拉菜单的用户控件,我可以在IE中禁用它,但不能在chrome中禁用。

我的解决方案是使用该代码禁用每个子对象,而不仅仅是usercontrol:

$('#controlName').find('*').each(function () { $(this).attr("disabled", true); })

现在正在为我的Chrome工作。

答案 3 :(得分:0)

尝试$("input[type='text']").attr('disabled', true);

答案 4 :(得分:0)

如果要从输入中删除所有禁用的属性,那么为什么不这样做:

$("input").removeAttr('disabled');

然后在ajax成功之后:

$("input[type='text']").attr('disabled', true);

确保在提交之前使用删除已禁用的属性,否则它将不会提交该数据。如果您需要在更改之前提交,则需要使用readonly。

答案 5 :(得分:0)

你试过prop() ??

吗?

好道具()好像works for me

答案 6 :(得分:0)

下面:
http://jsbin.com/urize4/edit

实时预览
http://jsbin.com/urize4/

您应该使用“readonly”代替:

$("input[type='text']").attr("readonly", "true");

答案 7 :(得分:0)

我的问题是使用disabled attr的元素需要定义为表单元素,.ie输入类型才能工作。两者都使用attr()和prop(),但后者选择后者以便将来维护。

答案 8 :(得分:0)

从HTML-5开始,大多数禁用的属性不适用于锚标记。因此,我们将其更改为“按钮”,并使用适当的颜色,边框样式等相应地对其进行样式设置。对于用户在Chrome中遇到的类似问题,这是最合适的解决方案。只有很少的元素支持“禁用”属性: 跨度,选择,选项,文本区域,输入,按钮。