2016-06-17 3 views
0

Я пытаюсь что-то сделать с JQuery, и я не могу заставить его работать. Многое связано с тем, что я не парень JQuery, поэтому я уверен, что все это неправильно.Добавление атрибута для ввода дочерних элементов скрытых элементов с jquery?

У меня очень большая форма с некоторыми условными обозначениями, где определенные части формы не отображаются, в зависимости от того, какое значение переключателя выбрано. Так что я сделал, когда выбрано определенное значение, оно добавит или удалит класс «hide-me» в элемент div, поэтому все поля формы внутри не отображаются. Проблема в том, что если у меня есть какие-то требования, форма не будет отправлена, и вы не сможете заполнить поле, которое не видно. Так что я хочу сделать, когда форма отправлена, она должна сначала захватить все дочерние элементы ввода в любом div с классом hide-me и установить атрибут disabled.

Как это сделать?

Вот несколько примеров кода: http://codepen.io/amarit84/pen/KMgKRd

$('#test_form_id').submit(function() { 
    $('.hide-me').children(":input").prop("disabled", true); 
}); 
+0

[Это уже работает] (https://jsfiddle.net/bu7tjucv/), не так ли? – nicael

+0

не так много опыта в jquery, но поскольку у вас есть более одного элемента ввода, правильно? Я думаю, что вам не хватает '.each()' – KanisXXX

+1

@Vijay Предоставленный код OP уже работает без каких-либо дополнений. – nicael

ответ

1

Просто положите его за пределы submit(), ваш пример не работает, поэтому я добавил jquery в свой код.

$('.hide-me').children(":input").prop("disabled", true); 
$('#test_form_id').submit(function() { 

}); 

Он всегда будет вызывать, чтобы заполнить форму скрытой потому Jquery код, чтобы отключить скрытый вход в вашем подать(), проверка HTML5 является остановить вас от запуска представить то почему ваш код, чтобы отключить скрытые входы обыкновения выполнять , codepen sample updated

+0

Спасибо. Я предполагаю, что меня немного смущает, как форма знает, чтобы запустить эту первую строку jquery? На самом деле это единственная причина, по которой я положил ее в функцию отправки. – lpangm03

+0

Он не знает. Если вне функции, эта первая строка будет выполнена onload. –

+0

Я не могу изложить это на самом деле, и я действительно не могу сейчас объяснить, как codepen удалось прочитать первую строку, но обычно я добавляю $ document.ready, чтобы убедиться, что он будет запускать скрипты, когда страница будет готова. если вы считаете, что мой ответ на ваш вопрос приемлемый, пожалуйста, примите как ответ, спасибо. [jquery document ready] (https://learn.jquery.com/using-jquery-core/document-ready/) – Efx

0

Попробуйте это:

$('.hide-me').children("input").attr("disabled", true); 

Но, так как вы делаете это onsubmit, я не понимаю, вы пытаетесь сделать это. Перегрузка страницы в любом случае ...

Here's a Fiddle с «измененным» кодом.

+0

Я только что обновил Fiddle, чтобы сделать вашу ссылку включения Работа. –

Смежные вопросы