如何将焦点设置为独立于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(); } });