Bagaimana cara menonaktifkan semua <input> di dalam formulir dengan jQuery?

145
<form id="target">
....
</form>
Oh Tuhan
sumber

Jawaban:

283

Dalam versi yang lebih lama, Anda dapat menggunakan attr. Pada jQuery 1.6 Anda harus menggunakan prop:

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

Untuk menonaktifkan semua elemen formulir di dalam 'target'. Lihat :input:

Cocok dengan semua input, textarea, pilih dan elemen tombol.

Jika Anda hanya menginginkan <input>elemen:

$("#target input").prop("disabled", true);
cletus
sumber
21
Pada jQuery 1.6 Anda harus menggunakan$("#target :input").prop("disabled", true);
danijel
4
Seseorang harus mengedit jawaban dengan metode yang diperbarui - ini hanya informasi yang buruk saat ini.
Ben Claar
dan dalam callback kirim (), menggunakan $ (ini), bagaimana cara melakukannya?
Olivier Pons
2
@OlivierPons $(this).closest('form').find('input').prop('disabled', true);. Tidak yakin apakah Anda dapat mengkonsolidasikan itu lebih baik, saya masih agak noobish di jQuery.
wjervis
39

Contoh di atas secara teknis salah. Per jQuery terbaru, gunakan prop()metode yang harus digunakan untuk hal-hal seperti dinonaktifkan. Lihat halaman API mereka.

Untuk menonaktifkan semua elemen formulir di dalam 'target', gunakan pemilih input: yang cocok dengan semua input, textarea, pilih dan elemen tombol.

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

Jika Anda hanya menginginkan elemen, gunakan ini.

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

Juga cara yang lebih ringkas adalah dengan menggunakan mesin penyeleksi mereka. Jadi untuk menonaktifkan semua elemen formulir di div atau form induk.

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

Anda dapat menambahkan

 <fieldset class="fieldset">

lalu Anda bisa menelepon

 $('.fieldset').prop('disabled', true);
Otto Kanellis
sumber
8

Untuk menonaktifkan semua formulir, semudah menulis:

jQuery 1.6+

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

jQuery 1.5 dan di bawah

$("#form :input").attr('disabled','disabled');
Malaikat Cuenca
sumber
8

Dengan satu baris ini Anda dapat menonaktifkan bidang input apa pun di formulir

$('form *').prop('disabled', true);
Samir Rahimy
sumber
ini tidak perlu menambahkan properti yang dinonaktifkan ke setiap elemen dalam formulir.
Osvaldo Maria
@OsvaldoMaria ya, itu karena selektor bintang (semua), Anda bisa menambahkan .custom-class ke semua elemen input yang ingin Anda nonaktifkan, lalu ubah pemilih ke $ ('form .custom-class'). Prop ( 'dinonaktifkan', benar ').
Samir Rahimy
-1

Jawaban pasti (mencakup perubahan ke api jQuery di versi 1.6) telah diberikan oleh Gnarf

ErichBSchulz
sumber
Dia meminta "menonaktifkan semua input di dalam formulir", bukan hanya "menonaktifkan semua input".
Bengala
@ Bengala yakin, tapi Anda menandai saya dengan keras karena menjadi orang pertama yang menunjukkan bahwa API telah berubah. Pada saat saya memposting ini, tidak ada jawaban lain yang menyebutkan poin ini.
ErichBSchulz
Saya mengerti, tapi saya pikir Anda harus memasukkan jawaban yang benar dengan kredit masing-masing, tautan hanya menunjukkan cara menonaktifkan semua input, yang saya bersikeras, itu tidak menjawab sama sekali pertanyaan.
Bengala