Как отключить все <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)


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.