jQuery:在表单中选择第一个子输入但不在类型:hidden时选择?

时间:2012-02-18 15:57:02

标签: jquery jquery-selectors selector

我有一个变量,它包含不同的表单对象,如... $(formId)

每个表单都不同,因为要么将隐藏的输入字段作为第一个元素,要么第一个子表单是正常输入(type =“text”或其他)

我怎样才能总是选择第一个“普通”输入字段

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

我认为它应该是这样的。所以,如果你想知道我需要什么 - 我想将焦点设置为表单中的第一个输入字段,但如果第一个输入是隐藏的,我当然希望将其设置为下一个“可见”输入。 / p>

3 个答案:

答案 0 :(得分:19)

:first-child选择器选择是第一个孩子的元素, jQuery集合中的第一个项目。<登记/> 要选择集合的第一个元素,请使用jQuery的:first选择器。

您对:not的实施也是错误的 :not[type='hidden'] 等于 :not()[type='hidden'] 等于 [type='hidden'] - 您想要的相反

<小时/> 这些是正确的选择器(它们是等价的):

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

答案 1 :(得分:8)

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

答案 2 :(得分:0)

使用:hidden选择器会在你的情况下工作吗?

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

(不太确定我的标记是什么样的......)