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()と.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);

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

于 2011-05-18T16:41:00.710 に答える
2

これは古い投稿ですが、このソリューションはどれもうまくいきませんでした。誰かがこれが役に立ったと思ったら、ソリューションを投稿します。

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

私の場合、無効にする必要のあるコントロールは、子ドロップダウンを備えたユーザーコントロールでした。これは、IEでは無効にできますが、Chromeでは無効にできません。

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

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

それは今クロームで私のために働いています。

于 2013-06-02T14:29:47.733 に答える
0

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

さてprop()は私のために働くようです

于 2011-05-18T16:43:34.923 に答える
0

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

于 2011-05-18T16:37:39.383 に答える
0

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

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

readonly次のように、代わりに「」を使用する必要があります。

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

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

于 2013-11-18T13:56:25.910 に答える
0

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

于 2019-07-01T16:03:39.440 に答える