有没有一种简单的方法可以在加载页面时将网页的焦点(输入光标)设置在第一个输入元素(文本框,下拉列表等)上,而无需知道该元素的ID?
我想将其实现为Web应用程序所有页面/表单的通用脚本。
有没有一种简单的方法可以在加载页面时将网页的焦点(输入光标)设置在第一个输入元素(文本框,下拉列表等)上,而无需知道该元素的ID?
我想将其实现为Web应用程序所有页面/表单的通用脚本。
Answers:
您也可以尝试基于jQuery的方法:
$(document).ready(function() {
$('form:first *:input[type!=hidden]:first').focus();
});
尽管这不能回答问题(需要通用脚本),但对于其他人来说HTML5引入了“ autofocus”属性可能对我很有用:
<form>
<input type="text" name="username" autofocus>
<input type="password" name="password">
<input type="submit" value="Login">
</form>
深入了解HTML5有更多信息。
autofocus
值时,我的Spring应用程序中断spring:form
。autofocus="autofocus"
不过效果很好。谢谢,@雅各布。
document.forms[0].elements[0].focus();
可以使用一个循环来精炼例如。不关注某些类型的字段,禁用的字段等。更可能是一类=“自动对焦”添加到你实际现场做了形式[I] .elements [J]寻找一个类名想集中和循环。
无论如何:在每个页面上这样做通常不是一个好主意。当您集中输入时,用户将失去例如的能力。从键盘上滚动页面。如果出乎意料,这可能会很烦人,因此只有在您确定使用表单字段将成为用户想要执行的操作时,才进行自动对焦。即。如果您是Google。
我发现最有效的jQuery表达式是(通过over here的帮助)
$(document).ready(function() {
$('input:visible:enabled:first').focus();
});
如果您使用的是Prototype JavaScript框架,则可以使用focusFirstElement方法:
Form.focusFirstElement(document.forms[0]);
这里有可能有用的文章:将焦点设置为网页上的第一个输入
您还需要跳过任何隐藏的输入。
for (var i = 0; document.forms[0].elements[i].type == 'hidden'; i++);
document.forms[0].elements[i].focus();
while
语句,为什么要浪费内存?
将此代码放在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>
尝试了很多上述答案,但它们没有起作用。在http://www.kolodvor.net/2008/01/17/set-focus-on-first-field-with-jquery/#comment-1317找到了这个。 谢谢Kolodvor。
$("input:text:visible:first").focus();
这包括文本区域,不包括单选按钮
$(document).ready(function() {
var first_input = $('input[type=text]:visible:enabled:first, textarea:visible:enabled:first')[0];
if(first_input != undefined){ first_input.focus(); }
});
您应该能够使用clientHeight而不是检查display属性,因为父级可能会隐藏此元素:
function setFocus() {
var forms = document.forms || [];
for (var i = 0; i < forms.length; i++) {
for (var j = 0; j < forms[i].length; j++) {
var widget = forms[i][j];
if ((widget && widget.domNode && widget.domNode.clientHeight > 0) && typeof widget.focus === "function")
&& (typeof widget.disabled === "undefined" || widget.disabled === false)
&& (typeof widget.readOnly === "undefined" || widget.readOnly === false)) {
widget.focus();
break;
}
}
}
}
}