2010-05-24 1 views
10

Это самый простой способ получить все элементы формы, которые содержатся элементом-оболочкой.jQuery - получить элементы формы по контейнеру id

<form name="myForm"> 
    <input name="elementA" /> 
    <div id="wrapper"> 
    <input name="elementB" /> 
    <textarea name="elementC" /> 
    </div> 
</form> 

В приведенном выше HTML я бы использовал элемент B и elementC, но не elementA. Я не хочу перечислять все типы элементов формы (select, textarea, input, option ...). Я бы предпочел использовать myForm.elements.

Любые идеи?

ответ

15

Используйте селектор :input псевдо, если вы не хотите, чтобы указать их все:

$('#wrapper :input'); 

:input выбирает все входные, текстовое поле, выберите и кнопки элементов. И здесь нет необходимости использовать .children().

+0

Мне действительно нужно посмотреть на больше псевдоселекторов. Это дважды кто-то придумал лучшее решение, потому что я не знаю их всех :) –

+0

Да, это :), я не знаю, почему я думал, что это только для входных элементов ... например: reset: radio .. –

+0

@ungarida: Потому что 'input' и': input' являются только одним символом, но более поздний включает все типы управления формой. – Powerlord

1

Если нет ничего, кроме элементов формы в нем

$('#wrapper').children(); 

Если будут другие вещи, а

$('#wrapper').children('input, select, textarea'); 
+0

что насчет '', который не будет найден – jigfox

+0

@Jens, это было точно. –

+0

Он говорит: «Я бы использовал элемент B и elementc, но не elementA». Сначала он попросил элементы формы в контейнере. –

0

JQuery ('форма [имя = MyForm] DIV # обертка').дети();

+0

вы также хотите найти элементА. Попробуйте код здесь, он не должен быть –

0

насчет

$(form)[0].elements 

Я знаю выше код работает в Chrome. Не тестировать другие браузеры.