JQuery: выберите вход первого ввода внутри формы, но не когда тип: скрыт?

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

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

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

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

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

Ответ 1

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

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

<ч/" > Это правильные селекторы (они эквивалентны):

input:not([type=hidden]):first
input[type!=hidden]:first

Ответ 2

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

Ответ 3

Будет ли использование скрытого селектора работать в вашем случае?

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

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