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


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);

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);

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)

13

Anda dapat menambahkan

 <fieldset class="fieldset">

lalu Anda bisa menelepon

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

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');

8

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

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

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


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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.