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

时间:2014-08-08 14:50:23

标签: javascript jquery html css

我有一个包含多个表单的HTML文件。我试图将第二个表单的第一个元素聚焦在页面加载上。我将jquery代码添加到HTML结尾,以便首先关注表单的输入:

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

如果第二个表单的第一个元素是文本输入,它可以正常工作,但如果它的下拉列表或复选框它不起作用。如何将焦点集中在任何第一个元素上?

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

2 个答案:

答案 0 :(得分:4)

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

FIDDLE

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

编辑:根据评论,ID不是常量,因此使用tagName和:eq()可以选择第二种形式,而:eq()基于零,第二个是1

答案 1 :(得分:3)

输入选择器根据http://api.jquery.com/input-selector/的文档查找任何有效的表单输入元素,其中包括下拉列表和复选框。 因为看起来它还包含隐藏的字段,所以我还添加了:visible选择器来删除隐藏的表单元素。

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