是这样的:
<body onload='setFocusToTextBox()'>
那么有人可以帮我吗?我不知道如何使用JavaScript将焦点设置到文本框。
<script>
function setFocusToTextBox(){
//What to do here
}
</script>
#1 楼
执行此操作。如果您的元素是这样的..
<input type="text" id="mytext"/>
您的脚本将是
<script>
function setFocusToTextBox(){
document.getElementById("mytext").focus();
}
</script>
评论
您必须使用Web API的其他部分(例如Document.forms,Document.getelementsByTagName或Node.childNodes)来扫描文档,并依赖于已知的文档结构或寻找某些元素特定的属性。
–彼得
2014年6月16日10:03
或明显的答案...给它一个ID;)
–相关
2014年8月27日在22:52
我建议不要使用ID,因为它已被过度指定。而是使用名称甚至是类。在那种情况下,您将使用document.querySelector(“ [name ='myText']”)或document.querySelector(“。myText”)获得对输入元素的引用。
–克里斯·洛夫(Chris Love)
15年11月23日在19:18
@ChrisLove有趣的建议。为什么有一个ID被“过度指定”?它到底是什么问题?它更简单,更精确,使用ID进行定位的代码会稍快一些。对于我来说,这听起来似乎是最显而易见,最明智的事情-如果可能的话。
– PandaWood
16年4月4日,0:59
@ChrisLove,这并不是过度指定CSS选择器,而是设置HTML ID属性-特异性是CSS处理解析DOM选择器的方式的问题,而不是ID和类属性在HTML中的工作方式的问题。建议不要使用与JS相同的DOM选择器来附加CSS,这意味着您可以保持所描述的差异
–托尼·利(Toni Leigh)
17年3月21日在13:25
#2 楼
对于它的价值,可以在兼容HTML5的浏览器上使用autofocus
属性。即使在版本10的IE上也可以使用。<input name="myinput" value="whatever" autofocus />
评论
请记住,这仅在页面首次加载时用于设置焦点;以后不能根据输入来设置焦点。
–马丁·卡尼(Martin Carney)
2014年9月26日下午16:44
恐怕如果IOS Safari(caniuse.com/#search=autofocus)时autofocus属性不兼容,而.focus()与Opera Mini(caniuse.com/#search=focus)不兼容
–lfrodrigues
17年5月22日在21:07
请注意,如果您试图从控制台集中精力,那是不可能的!
–或Choban
19年4月4日在9:03
#3 楼
通常,当我们关注文本框时,还应该滚动到视图中。function setFocusToTextBox(){
var textbox = document.getElementById("yourtextbox");
textbox.focus();
textbox.scrollIntoView();
}
检查是否有帮助。
评论
如果该字段不在屏幕上,这可能会在较小的屏幕上令人头疼::)
–托尼·利(Toni Leigh)
17年3月21日在13:26
如果标题栏是固定的,则可能需要使用textbox.scrollIntoView(false),这只是将元素设置为底部而不是顶部。
–DeadlyChambers
17年11月28日在16:43
#4 楼
如果您的代码是:<input type="text" id="mytext"/>
并且如果您使用的是JQuery,则也可以使用此代码:
<script>
function setFocusToTextBox(){
$("#mytext").focus();
}
</script>
请记住,您必须先绘制输入
$(document).ready()
评论
我对此表示反对,因为基本问题中几乎没有jQuery的含义。 OP希望保留纯JavaScript
–堕落者
2015年6月2日19:59
好吧,你有理由,我错了,但是我认为还是有帮助的。
–Richard Rebeco
15年6月19日在13:35
我对此表示赞同,因为在已经使用jQuery并且您将元素作为jQuery选择对象的项目中,最好保持一致而不是使用普通JS。
–天堂
16年6月14日在6:56
@stackoverflow的帮助中心表示,@ Fallenreaper Downvotes用于草率的,不费力的帖子,或者答案是明显的,甚至可能是危险的错误答案。我发现这些类别附近无处可寻。帮助不仅限于OP,是吗?
–Gellie Ann
17-10-18在2:30
@GellieAnn尽管是答案,但它不在OP问题的范围内。他使用香草javascript是有原因的,尽管您可以提及其他框架并给出指向该框架的指针或提示,并给出理由,但您仍应从所提出问题的范围内解决问题。因此,我坚持我的反对意见。
–堕落者
17-10-18在16:27
#5 楼
对于纯Javascript,请尝试以下操作:window.onload = function() {
document.getElementById("TextBoxName").focus();
};
#6 楼
我以前只是用这个:<html>
<head>
<script type="text/javascript">
function focusFieldOne() {
document.FormName.FieldName.focus();
}
</script>
</head>
<body onLoad="focusFieldOne();">
<form name="FormName">
Field <input type="text" name="FieldName">
</form>
</body>
</html>
也就是说,您可以在HTML 5中使用autofocus属性。
请注意:我想要更新此旧线程,以显示所询问的示例以及对于仍在阅读本文的用户的更新,更轻松的更新。 ;)
#7 楼
如前所述,document.forms也适用。function setFocusToTextBox( _element ) {
document.forms[ 'myFormName' ].elements[ _element ].focus();
}
setFocusToTextBox( 0 );
// sets focus on first element of the form
评论
AFAIK表单没有“名称”属性
– Marecky
2015年10月7日,0:54
表单已经有很长时间了,在HTML5中,它们仍然存在。参见w3.org/TR/html5/forms.html#the-form-element
– Mac
2015年11月3日,2:39
#8 楼
如果您的<input>
或<textarea>
具有属性id=mytext
,请使用mytext.focus();
function setFocusToTextBox() {
mytext.focus();
}
<body onload='setFocusToTextBox()'>
<form>
<input type="text" id="mytext"/>
</form>
</body>
#9 楼
window.onload最初是要聚焦的焦点onblur是在单击文本区域之外时要聚焦的焦点,或者避开文本区域
<textarea id="focus"></textarea>
<script>
var mytexarea=document.getElementById("focus");
window.onload=function()
{
mytexarea.focus();
}
mytextarea.onblur=function(){
mytextarea.focus();
}
</script>
评论
就像document.getElementById('your_text_box_id')。focus();一样简单。