jQueryを使用してフォーム内のすべての<input>を無効にする方法は?


回答:


283

古いバージョンではを使用できましたattr。jQuery 1.6以降、prop代わりに使用する必要があります。

$("#target :input").prop("disabled", true);

「ターゲット」内のすべてのフォーム要素を無効にします。を参照してください:input

すべてのinput、textarea、select、およびbutton要素に一致します。

<input>要素のみが必要な場合:

$("#target input").prop("disabled", true);

21
jQuery 1.6以降、使用する必要があります$("#target :input").prop("disabled", true);
danijel 2013年

4
誰かが更新された方法で回答を編集する必要があります-これは現時点では単に悪い情報です。
Ben Claar 2013年

そして、submit()コールバックで、$(this)を使用して、それを行う方法は?
Olivier Pons、2015年

2
@OlivierPons $(this).closest('form').find('input').prop('disabled', true);。それをうまく統合できるかどうかわからないが、私はまだjQueryにかなり慣れていない。
wjervis 2015年

39

上記の例は技術的に正しくありません。最新のjQueryごとに、prop()無効化などのメソッドを使用する必要があります。APIページをご覧ください。

'target'内のすべてのフォーム要素を無効にするには、すべてのinput、textarea、select、およびbutton要素に一致する:inputセレクターを使用します。

$("#target :input").prop("disabled", true);

要素だけが必要な場合は、これを使用します。

$("#target input").prop("disabled", true);

15

また、より簡潔な方法は、セレクターエンジンを使用することです。したがって、divまたはフォームの親のすべてのフォーム要素を無効にします。

$myForm.find(':input:not(:disabled)').prop('disabled',true)

13

あなたは付け加えられます

 <fieldset class="fieldset">

そして、あなたは呼び出すことができます

 $('.fieldset').prop('disabled', true);

8

すべてのフォームを無効にするには、次のように書くだけです。

jQuery 1.6以降

$("#form :input").prop("disabled", true);

jQuery 1.5以下

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

8

この1行で、フォームの入力フィールドを無効にできます

$('form *').prop('disabled', true);

これにより、フォームのすべての要素に無効なプロパティが不必要に追加されます。
Osvaldo Maria

@OsvaldoMariaええ、これはスター(すべて)セレクターが原因です。無効にするすべての入力要素に.custom-classを追加してから、セレクターを$( 'form .custom-class')。prop( '無効'、true ')。
Samir Rahimy

-1

決定的な答え(バージョン1.6でのjQuery apiへの変更をカバー)はGnarfから提供されました


彼は、「すべての入力を無効にする」だけでなく、「フォーム内のすべての入力を無効にする」ように求めました。
ベンガラ2017年

@ベンガラは確かですが、APIが変更されたことを最初に指摘したことに対して、私を厳しくマークしています。この時点で私はこれを投稿しましたが、この点について言及した他の回答はありません。
ErichBSchulz

私は理解していますが、それぞれのクレジットに正解を含める必要があると思います。リンクは、すべての入力を無効にする方法を示しているにすぎません。
ベンガラ
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.