JQuery: выбрать первый дочерний ввод внутри формы, но не тогда, когда тип: скрытый? - PullRequest
10 голосов
/ 18 февраля 2012

У меня есть переменная, которая содержит различные объекты формы, подобные этой ... $(formId)

Каждая форма отличается, так как либо имеет скрытое поле ввода в качестве первого элемента, либо первый дочерний элемент является обычным вводом (type = "text" или что-то еще)

как ВСЕГДА выбрать первое "нормальное" поле ввода

$(formId).find("input:first-child:not[type='hidden']")

Я думал, что это должно быть что-то вроде этого. Поэтому, если вам интересно, для чего мне это нужно - я хочу установить фокус на первое поле ввода в форме, но если первый ввод является скрытым, я, конечно, хочу установить его на следующий «видимый» ввод.

Ответы [ 3 ]

19 голосов
/ 18 февраля 2012

Селектор :first-child выбирает элемент, который является первым дочерним элементом , , а не первым элементом в коллекции jQuery.Чтобы выбрать первый элемент коллекции, используйте селектор jQuery :first.

Ваша реализация :not также неверна.:not[type='hidden'] равно :not()[type='hidden'] равно [type='hidden'] - напротив того, что вы хотите.

Это правильные селекторы (они эквивалентны):

input:not([type=hidden]):first
input[type!=hidden]:first
8 голосов
/ 18 февраля 2012

$(formId).find ('input:visible:first').focus();

0 голосов
/ 18 февраля 2012

Будет ли работать: скрытый селектор в вашем случае?

$(formId).find("input:first-child:not(:hidden)")

(Не уверен, что я понимаю, как выглядит ваша разметка ...)

...