Как отключить все <input> внутри формы с помощью jQuery?

Ответы:

283

В старых версиях вы могли использовать attr. Начиная с jQuery 1.6 вы должны использовать propвместо этого:

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

Отключить все элементы формы внутри «цели». Смотрите :input:

Соответствует всем элементам ввода, textarea, select и button.

Если вы хотите только <input>элементы:

$("#target input").prop("disabled", true);
Клетус
источник
21
Начиная с jQuery 1.6 вы должны использовать$("#target :input").prop("disabled", true);
Даниэль
4
Кто-то должен отредактировать ответ с помощью обновленного метода - это просто плохая информация на данный момент.
Бен Клар
и в обратном вызове submit (), используя $ (this), как это сделать?
Оливье Понс
2
@OlivierPons $(this).closest('form').find('input').prop('disabled', true);. Не уверен, что ты сможешь закрепить это лучше, я все еще довольно тупой в jQuery.
wjervis
39

Приведенный выше пример технически неверен. В последней версии jQuery prop()метод следует использовать для таких вещей, как отключено.Смотрите их страницу API.

Чтобы отключить все элементы формы внутри 'target', используйте селектор: input, который соответствует всем элементам input, textarea, select и button.

$("#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

С помощью этой строки вы можете отключить любое поле ввода в форме

$('form *').prop('disabled', true);
Самир Рахими
источник
это излишне добавляет отключенное свойство к каждому элементу в форме.
Освальдо Мария
@OsvaldoMaria да, то есть из-за селектора звезды (все), вы можете добавить .custom-класс ко всем элементам ввода, которые вы хотите отключить, а затем изменить селектор на $ ('form .custom-class'). Prop ( 'отключено', правда ').
Самир Рахими
-1

Окончательный ответ (охватывающий изменения в jQuery api в версии 1.6) был дан Gnarf

ErichBSchulz
источник
Он попросил «отключить все входы внутри формы», а не просто «отключить все входы».
Бенгала
@ Бенгала, конечно, но вы жестко отмечаете меня за то, что я первый указал на то, что API изменился. В то время, когда я опубликовал это, ни один из других ответов не упомянул об этом.
ErichBSchulz
Я понимаю, но я думаю, что вы должны включить правильный ответ с соответствующими кредитами, ссылка просто показывает, как отключить все входы, что я настаиваю, это не отвечает вообще на вопрос.
Бенгальский