56

不知道为什么这不起作用。

当人们单击我的应用程序的“编辑”按钮时,禁用的文本字段变得可编辑:

$("#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 中进行这项工作吗?非常感谢!

4

9 回答 9

95

如果您使用的是 jQuery < 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');

请参阅此处了解有关信息:text

于 2011-05-18T16:41:44.860 回答
6

对我来说,这些答案都不起作用,但我终于找到了一个。

我需要这个用于 IE-

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

我还必须为 Chrome 和 Firefox 添加这个 -

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

和这个 -

<style type="text/css">
    .notactive {
        pointer-events: none;
        cursor: default;
    }
 </style>
于 2014-03-20T16:33:00.843 回答
4

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

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

然后在ajax成功后:

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

确保在提交之前使用 remove disabled 属性,否则它不会提交该数据。如果需要在更改之前提交,则需要使用 readonly 代替。

于 2011-05-18T16:41:00.710 回答
2

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

我只是有同样的问题。

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

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

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

它现在在 chrome 中为我工作。

于 2013-06-02T14:29:47.733 回答
0

你试过prop()吗?

好吧 prop() 似乎对我有用

于 2011-05-18T16:43:34.923 回答
0

这里:http:
//jsbin.com/urize4/edit

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

您应该使用“ readonly”代替:

$("input[type='text']").attr("readonly", "true");
于 2011-05-18T16:45:01.880 回答
0

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

于 2013-11-18T13:56:25.910 回答
0

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

于 2011-05-18T16:37:39.383 回答
0

从 HTML-5 开始,大部分 disabled 属性不适用于锚标记。因此,我们将其更改为“按钮”,并使用适当的颜色、边框样式等对其进行相应的样式设置。对于用户在 Chrome 中面临的任何类似问题,这是最恰当的解决方案。只有少数元素支持“禁用”属性:Span、select、option、textarea、input、button。

于 2019-07-01T16:03:39.440 回答