如何使用 JavaScript 将焦点设置在 HTML 表单中的元素上?

IT技术 javascript html textbox focus
2021-01-25 22:23:04

我有一个带有文本框的网络表单。默认情况下,如何将焦点设置到文本框?

像这样的东西:

<body onload='setFocusToTextBox()'>

所以有人可以帮我吗?我不知道如何使用 JavaScript 将焦点设置到文本框。

<script>
  function setFocusToTextBox(){
    //What to do here
  }
</script>
6个回答

做这个。

如果你的元素是这样的..

<input type="text" id="mytext"/>

你的脚本将是

<script>
function setFocusToTextBox(){
    document.getElementById("mytext").focus();
}
</script>
或者显而易见的答案...给它一个 ID ;)
2021-03-16 22:23:04
@ChrisLove 有趣的建议。为什么有一个 id 被“过度指定”,它到底有什么问题?它更简单,更精确,定位它的代码会稍微快一点,有一个 ID。对我来说,这听起来是最明显、最明智的做法——如果可能的话。
2021-03-19 22:23:04
您必须使用 Web API 的其他部分(例如Document.formsDocument.getelementsByTagNameNode.childNodes扫描文档并且要么依赖于已知的文档结构,要么寻找某些特定于元素的属性。
2021-03-25 22:23:04
@ChrisLove 这不是过度指定 CSS 选择器,而是设置 HTML ID 属性 - 特异性是 CSS 处理解析 DOM 选择器的方式的问题,而不是 ID 和类属性在 HTML 中的工作方式的问题。不建议使用与附加 JS 相同的 DOM 选择器来附加 CSS,这意味着您可以保持所描述的差异化
2021-03-25 22:23:04
我建议不要使用 ID,因为它被过度指定。而是使用名称甚至类。在这种情况下,您将使用 document.querySelector("[name='myText']") 或 document.querySelector(".myText") 来获取对输入元素的引用。
2021-03-26 22:23:04

对于它的value,您可以在 HTML5 兼容浏览器上使用autofocus属性从版本 10 开始,甚至可以在 IE 上运行。

<input name="myinput" value="whatever" autofocus />
恐怕自动对焦的属性是不兼容的,如果IOS的Safari(caniuse.com/#search=autofocus),而.focus()仅仅是与Opera Mini的不兼容(caniuse.com/#search=focus
2021-03-19 22:23:04
请注意,如果您尝试从控制台聚焦,那么这是不可能的!
2021-03-20 22:23:04
它也适用于使用具有autofocus.
2021-03-26 22:23:04
请记住,这仅适用于在页面首次加载时设置焦点;它不能用于稍后响应输入来设置焦点。
2021-04-08 22:23:04

通常当我们关注一个文本框时,我们也应该滚动到视图中

function setFocusToTextBox(){
    var textbox = document.getElementById("yourtextbox");
    textbox.focus();
    textbox.scrollIntoView();
}

检查它是否有帮助。

这是更复杂页面的正确答案。
2021-03-22 22:23:04
如果你有一个固定的标题栏,你可能需要使用 textbox.scrollIntoView(false) 这只是将元素设置到底部而不是顶部。
2021-04-03 22:23:04
如果该字段不在屏幕上,这在较小的屏幕上可能会令人头疼:-)
2021-04-06 22:23:04

如果您的代码是:

<input type="text" id="mytext"/>

如果您使用的是 JQuery,您也可以使用它:

<script>
function setFocusToTextBox(){
    $("#mytext").focus();
}
</script>

请记住,您必须先绘制输入 $(document).ready()

egregiously sloppy, no-effort-expended post, or an answer that is clearly and perhaps dangerously incorrect根据 stackoverflow 的帮助中心,@Fallenreaper Downvotes 适用于我发现这与这些类别相去甚远。帮助不限于OP,是吗?
2021-03-15 22:23:04
我赞成这一点,因为在已经使用 jQuery 并且元素作为 jQuery 选择对象的项目中,最好保持一致而不是使用 vanilla JS。
2021-03-24 22:23:04
好吧,你有理由,我错了,但我认为无论如何它都有帮助。
2021-03-31 22:23:04
@GellieAnn 虽然这是一个答案,但它超出了 OP 问题的范围。他使用 vanilla javascript 是有原因的,虽然您可以提及其他框架并给出指向某个框架的指示或提示并给出理由,但您仍然应该在所问问题的范围内解决答案。因此,我支持我的反对票。
2021-04-01 22:23:04
我反对这一点,因为基本问题中几乎没有 jQuery 的含义。OP 希望保持纯粹的 javascript
2021-04-02 22:23:04

对于普通的 Javascript,请尝试以下操作:

window.onload = function() {
  document.getElementById("TextBoxName").focus();
};