javascript - jquery focus() 只关注第一个文本输入

标签 javascript jquery html css

我有一个包含多种形式的 HTML 文件。我正在尝试将第二个表单的第一个元素集中在加载的页面上。我在 HTML 的末尾添加了 jquery 代码以聚焦表单的第一个输入:

<script>
    $("form[id=form2]").find("input[type!=hidden]:first").focus();
</script>

如果第二个表单的第一个元素是文本输入,它工作得很好,但如果它的下拉列表或复选框,它就不起作用。我怎样才能将焦点放在任何第一个元素上?

编辑:我需要在表单选择器中使用 ID,因为表单 ID 可以是可变的。

最佳答案

$("form:eq(1) :input[type!='hidden']").first().focus();

FIDDLE

不要使用带有 ID 的属性选择器,只使用 ID 选择器要快得多。
您可以使用 :input 选择器,它会选择所有输入元素,例如 input、textarea、select 和 button。
然后使用 :firstfirst() 获取第一个。

编辑:根据评论,ID 不是常量,因此使用 tagName 和 :eq() 您可以选择第二种形式,作为 :eq() 是从零开始的,第二个是 1

关于javascript - jquery focus() 只关注第一个文本输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25206242/

相关文章:

jquery - 使用 jquery 打印特定的 div

php - 第一次访问后,使用 PHP cookie 自动填充以前用户输入的表单?

javascript - 避免全局变量意味着被迫在不同的函数中声明相同的变量?

javascript - JS中如何获取周数

php - 将 php 语法与 ajax 结合起来

javascript - 获取表行作为链接

javascript - 在警报中返回用户输入的简单 Chrome 扩展

javascript - 我如何存储和访问元素的数据属性,例如 React 中的选择选项

javascript - 在 CI 上使用 jquery 操作分页,但链接已更新

jquery - 使用 jQuery 删除 div 中的第二个跨度