如何将焦点设置为独立于id的HTML表单中的第一个input元素?

有没有一种简单的方法来设置网页 的焦点 (input光标)的第一个input元素 (文本框,下拉列表,…)加载页面,而不必知道元素的ID?

我想实现它作为我的Web应用程序的所有我的页面/窗体的通用脚本。

你也可以尝试基于jQuery的方法:

$(document).ready(function() { $('form:first *:input[type!=hidden]:first').focus(); }); 

尽pipe这不能回答这个问题(需要一个通用的脚本),但是我认为HTML5引入“自动聚焦”(autofocus)属性对于其他人可能是有用的:

 <form> <input type="text" name="username" autofocus> <input type="password" name="password"> <input type="submit" value="Login"> </form> 

潜入HTML5有更多的信息。

 document.forms[0].elements[0].focus(); 

这可以使用一个循环来提炼,例如。 不集中某些types的字段,禁用的字段等等。 更好的做法可能是将一个class =“autofocus”添加到实际需要关注的字段中,然后遍历表单[i] .elements [j]寻找那个className。

无论如何:在每个页面上执行此操作通常不是一个好主意。 当你集中一个input时,用户失去了例如。 从键盘上滚动页面。 如果出乎意料的话,这可能是烦人的,所以只有当你确定使用表单字段将是用户想要做什么时,只有自动对焦。 即。 如果你是Google。

我发现最全面的jQueryexpression式是(通过这里的帮助)

 $(document).ready(function() { $('input:visible:enabled:first').focus(); }); 

如果您使用Prototype JavaScript框架,那么您可以使用focusFirstElement方法:

 Form.focusFirstElement(document.forms[0]); 

这里有一个可能有用的写法: 将焦点设置为网页上的第一个input

您还需要跳过任何隐藏的input。

 for (var i = 0; document.forms[0].elements[i].type == 'hidden'; i++); document.forms[0].elements[i].focus(); 

将这段代码放在body标签的最后,会自动将第一个可见,非隐藏的启用元素聚焦在屏幕上。 它将处理我可以在短时间内提出的大多数情况。

 <script> (function(){ var forms = document.forms || []; for(var i = 0; i < forms.length; i++){ for(var j = 0; j < forms[i].length; j++){ if(!forms[i][j].readonly != undefined && forms[i][j].type != "hidden" && forms[i][j].disabled != true && forms[i][j].style.display != 'none'){ forms[i][j].focus(); return; } } } })(); </script> 

这将得到任何可见的常见input,包括textareas和select框中的第一个。 这也确保他们不隐藏,禁用或只读。 它也允许我在我的软件中使用的目标div(即,在这个表单中的第一个input)。

 $("input:visible:enabled:not([readonly]),textarea:visible:enabled:not([readonly]),select:visible:enabled:not([readonly])", target).first().focus(); 

试了很多上面的答案,他们没有工作。 find这个: http : //www.kolodvor.net/2008/01/17/set-focus-on-first-field-with-jquery/#comment-1317谢谢你Kolodvor。

 $("input:text:visible:first").focus(); 

我正在使用这个:

 $("form:first *:input,select,textarea").filter(":not([readonly='readonly']):not([disabled='disabled']):not([type='hidden'])").first().focus(); 

对于那些使用JSF2.2 +并且无法将自动对焦作为无价值的属性传递给它的人,请使用:

  p:autofocus="true" 

并将其添加到命名空间p(也经常用pt。不pipe你喜欢什么)。

 <html ... xmlns:p="http://java.sun.com/jsf/passthrough"> 

AngularJS

 angular.element('#Element')[0].focus(); 

这包括textareas和排除单选button

 $(document).ready(function() { var first_input = $('input[type=text]:visible:enabled:first, textarea:visible:enabled:first')[0]; if(first_input != undefined){ first_input.focus(); } });