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

cab*_*ret 43 jquery google-chrome cross-browser attr jquery-attributes

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

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

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

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

$("#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();
});
Run Code Online (Sandbox Code Playgroud)

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

Nea*_*eal 77

如果您使用的是jQuery <1.6,请执行以下操作:

jQuery("input[type='text']").attr("disabled", 'disabled');
Run Code Online (Sandbox Code Playgroud)

如果您使用的是jQuery 1.6+:

jQuery("input[type='text']").prop("disabled", true);
Run Code Online (Sandbox Code Playgroud)

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

或者你可以尝试这个:

$('input:text').attr("disabled", 'disabled');
Run Code Online (Sandbox Code Playgroud)

看到这里获取信息 :text

  • 使用 1.5.2;遗憾的是,我仍然无法使用您提供的代码。感谢您的时间。 (2认同)

IQt*_*eMC 6

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

我需要这个用于 IE-

$('input:text').attr("disabled", 'disabled');
Run Code Online (Sandbox Code Playgroud)

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

$('input:text').AddClass("notactive");
Run Code Online (Sandbox Code Playgroud)

和这个 -

<style type="text/css">
    .notactive {
        pointer-events: none;
        cursor: default;
    }
 </style>
Run Code Online (Sandbox Code Playgroud)


fan*_*ite 5

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

$("input").removeAttr('disabled');
Run Code Online (Sandbox Code Playgroud)

然后ajax成功后:

$("input[type='text']").attr('disabled', true);
Run Code Online (Sandbox Code Playgroud)

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