JQuery ile bir form içindeki tüm <giriş> nasıl devre dışı bırakılır?


Yanıtlar:


283

Eski sürümlerde kullanabilirsiniz attr. JQuery 1.6'dan itibaren şunları kullanmalısınız prop:

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

'Hedef' içindeki tüm form öğelerini devre dışı bırakmak için. Bakınız :input:

Tüm giriş, metin, seçme ve düğme öğelerini eşleştirir.

Sadece <input>öğeleri istiyorsanız :

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

21
JQuery 1.6'dan itibaren kullanmanız gerekir$("#target :input").prop("disabled", true);
danijel

4
Birisi cevabı güncellenmiş yöntemle düzenlemelidir - bu, bu noktada sadece kötü bilgilerdir.
Ben Claar

ve $ (this) kullanarak bir send () geri çağrısında bunu nasıl yapabilirim?
Olivier Pons

2
@OlivierPons $(this).closest('form').find('input').prop('disabled', true);. Eğer daha iyi birleştirmek eğer emin değilim, ben hala jQuery de noobish değilim.
wjervis

39

Yukarıdaki örnek teknik olarak yanlıştır. En son jQuery başına, prop()yöntemi devre dışı gibi şeyler için kullanılmalıdır. API sayfalarına bakın.

'Hedef' içindeki tüm form öğelerini devre dışı bırakmak için, tüm giriş, metin alanı, seçim ve düğme öğelerine uyan: giriş seçiciyi kullanın.

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

Yalnızca elemanları istiyorsanız, bunu kullanın.

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

15

Ayrıca daha özlü yol, seçici motorunu kullanmaktır. Bu nedenle div veya form üst öğesindeki tüm form öğelerini devre dışı bırakmak için.

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

13

ekleyebilirsin

 <fieldset class="fieldset">

ve sonra arayabilirsin

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

8

Tüm formu devre dışı bırakmak için, yazmak kadar kolay:

jQuery 1.6+

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

jQuery 1.5 ve altı

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

8

Bu tek satırla, formdaki herhangi bir giriş alanını devre dışı bırakabilirsiniz

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

bu gereksiz biçimde formdaki her öğeye devre dışı bırakılmış bir özellik ekler.
Osvaldo Maria

@OsvaldoMaria evet, yıldız (tümü) seçici nedeniyle, devre dışı bırakmak istediğiniz tüm giriş öğelerine bir .custom sınıfı ekleyebilir, sonra seçiciyi $ ('form .custom-class') olarak değiştirebilirsiniz. Prop ( 'devre dışı', doğru ').
Samir Rahimy

-1

Kesin cevap (1.6 sürümünde jQuery api'deki değişiklikleri kapsayan) Gnarf tarafından verilmiştir.


Sadece "tüm girdileri devre dışı bırak" değil, "bir form içindeki tüm girdileri devre dışı bırak" istedi.
Bengala

@Bengala emin, ama API'nın değiştiğine ilk işaret ettiğim için beni sertçe işaretliyorsunuz. Bunu gönderdiğimde, diğer cevapların hiçbiri bu noktadan bahsetmedi.
ErichBSchulz

Anlıyorum, ancak ilgili kredilere doğru bir cevap eklemeniz gerektiğini düşünüyorum, bağlantı sadece tüm girişlerin nasıl devre dışı bırakılacağını gösteriyor, ısrar ettiğim, tüm soruya cevap vermiyor.
Bengala
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.