我有一个变量,它包含不同的表单对象,如... $(formId)
每个表单都不同,因为要么将隐藏的输入字段作为第一个元素,要么第一个子表单是正常输入(type =“text”或其他)
我怎样才能总是选择第一个“普通”输入字段
$(formId).find("input:first-child:not[type='hidden']")
我认为它应该是这样的。所以,如果你想知道我需要什么 - 我想将焦点设置为表单中的第一个输入字段,但如果第一个输入是隐藏的,我当然希望将其设置为下一个“可见”输入。 / p>
答案 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)")
(不太确定我的标记是什么样的......)