Як відключити всі <input> всередині форми з jQuery?


Відповіді:


283

У старих версіях ви могли використовувати attr. Станом на jQuery 1.6 вам слід використовувати prop:

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

Відключення всіх елементів форми всередині "target". Дивіться :input:

Відповідає всім елементам введення, текстовій області, вибору та кнопок.

Якщо ви хочете лише <input>елементи:

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

21
Станом на jQuery 1.6 вам слід скористатися$("#target :input").prop("disabled", true);
danijel

4
Хтось повинен редагувати відповідь оновленим методом - це лише погана інформація на даний момент.
Бен Клаар

і в зворотному дзвінку submit (), використовуючи $ (this), як це зробити?
Олів'є Понс

2
@OlivierPons $(this).closest('form').find('input').prop('disabled', true);. Не впевнений, чи зможете ви консолідувати це краще, я все ще досить noobish в jQuery.
wjervis

39

Наведений вище приклад технічно неправильний. За останній jQuery, prop()метод методу слід використовувати для таких речей, як інваліди. Дивіться їх сторінку API.

Щоб відключити всі елементи форми всередині "target", використовуйте: селектор введення, який відповідає всім елементам введення, textarea, select та button.

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

Якщо ви хочете лише елементи, використовуйте це.

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

15

Також більш стислим способом є використання двигуна їх селекторів. Отже, щоб відключити всі елементи форми в діві або батьківському форматі.

$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

За допомогою цього одного рядка ви можете відключити будь-яке поле введення у формі

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

це зайво додає відключене властивість до кожного елемента форми.
Освальдо Марія

@OsvaldoMaria так, це тому, що зірки (все) селектор, ви можете додати .custom-клас до всіх вхідних елементів, які ви хочете відключити, а потім змінити селектор на $ ('form .custom-class'). Prop ( 'інвалід', правда ').
Самір Рахімі

-1

Остаточну відповідь (охоплює зміни до jQuery api у версії 1.6) дав Gnarf


Він попросив "відключити всі входи всередині форми", а не просто "відключити всі введення".
Бенгала

@ Бенґала впевнений, але ти відверто позначаєш мене тим, що першим зазначив, що API змінився. У той час, коли я публікував це, жодна з інших відповідей не згадувала цей момент.
ErichBSchulz

Я розумію, але я думаю, ви повинні включити правильну відповідь із відповідними кредитами, посилання просто показує, як відключити всі введення, на чому я наполягаю, воно взагалі не відповідає на питання.
Бенгала
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.