jQuery:在表单内选择第一个子输入,但在类型:隐藏时不选择?

Posted

技术标签:

【中文标题】jQuery:在表单内选择第一个子输入,但在类型:隐藏时不选择?【英文标题】:jQuery: select first-child input inside form but not when type:hidden? 【发布时间】:2012-03-09 16:50:51 【问题描述】:

我有一个像这样保存不同表单对象的变量……$(formId)

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

我怎样才能始终选择第一个“正常”输入字段

$(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();

【讨论】:

:visible 不等于 [type!="hidden"]。如果将style="display:none" 添加到输入元素,它 :visible,但它确实 匹配[type!="hidden"]【参考方案3】:

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

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

(不太确定我明白你的标记是什么样子的......)

【讨论】:

:first-child 选择器选择第一个子元素。要选择集合的第一个元素,请使用 jQuery 的 :first 选择器:input:not([type=hidden]):first @Rob W:这似乎很完美,看起来是正确的解决方案。如果您将其发布为答案,我会接受。

以上是关于jQuery:在表单内选择第一个子输入,但在类型:隐藏时不选择?的主要内容,如果未能解决你的问题,请参考以下文章

JQuery选择器——子元素筛选选择器和表单元素选择器

jquery:需要一些函数来清空所有 <input> 值属性(在表单内),除了类型被隐藏的输入[重复]

使用 jquery 在选项选择的基础上添加新的表单输入字段

jQuery更改事件未更新

如何在第一个子选择器jquery中选择元素

jquery怎么删除第一个子元素