web-dev-qa-db-ja.com

jQuery .attr( "disabled"、 "disabled")はChromeで動作しません

なぜこれが機能しないのかわかりません。

ユーザーが私のアプリケーションの「編集」ボタンをクリックすると、無効化されたテキストフィールドが編集可能になります。

$("#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で行う方法はありますか?

42
cabaret

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

75
Neal

私にとっては、これらの答えはどれもうまくいきませんでしたが、最終的には答えが見つかりました。

IEでこれが必要だった

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

また、これをChromeおよびFirefoxに追加する必要がありました-

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

この -

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

それは古い投稿ですが、この解決策のどれも役に立たなかったので、誰かがこれを役に立てると思うなら、私は自分の解決策を投稿しています。

私はちょうど同じ問題を抱えていました。

私の場合、無効にする必要があるコントロールは、IEでなくクロムでは無効にできる子ドロップダウンを持つユーザーコントロールでした。

私の解決策は、そのコードで、ユーザーコントロールだけでなく、各子オブジェクトを無効にすることでした。

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

chromeで動作しています。

2
RoyBS

入力からすべての無効化された属性を削除する場合、次のようにしないでください:

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

次に、ajaxの成功後:

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

送信する前に必ずdisabled属性を削除してください。そうしないと、そのデータは送信されません。変更する前に送信する必要がある場合は、代わりに読み取り専用を使用する必要があります。

1
fanfavorite

$("input[type='text']").attr('disabled', true);を試してください

0
RussellUresti

prop() で試しましたか??

まあprop()は 私のために働く のようです。

0
Galled

ここに:
http://jsbin.com/urize4/edit

ライブプレビュー
http://jsbin.com/urize4/

代わりに「readonly」を使用する必要があります。

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

これに関する私の問題は、無効化されたattrを使用する要素が、フォーム要素、つまり機能するための入力タイプとして定義される必要があることでした。両方ともattr()とprop()で動作しましたが、将来の保守性のために後者を選択しました。

0
lxm7

ほとんど無効な属性は、HTML-5以降のアンカータグでは機能しません。したがって、それを「ボタン」に変更し、適切な色、境界線スタイルなどでそれに応じてスタイルを設定します。これは、ユーザーが直面している同様の問題に最も適したソリューションですChromeのみ'disabled'属性をサポートする要素はほとんどありません:Span、select、option、textarea、input、button。

0
Jyothise Johny