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

mat*_*att 10 jquery selector jquery-selectors

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

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

我怎样才能总是选择第一个"正常"输入字段

$(formId).find("input:first-child:not[type='hidden']")
Run Code Online (Sandbox Code Playgroud)

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

Rob*_*b W 19

所述:first-child选择器选择其中元件是所述第一子,在一个jQuery集合中的第一项.
要选择集合的第一个元素,请使用jQuery的:first选择器.

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


这些是正确的选择器(它们是等价的):

input:not([type=hidden]):first
input[type!=hidden]:first
Run Code Online (Sandbox Code Playgroud)


Dav*_*mas 8

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

  • `:visible`不等于`[type!="hidden"]`.如果你将`style ="display:none"添加到一个输入元素,它**不会**`:visible`,但它**匹配`[type!="hidden"]`. (3认同)