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

问题描述 投票:0回答:13

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

类似这样的:

<body onload='setFocusToTextBox()'>

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

<script>
  function setFocusToTextBox(){
    //What to do here
  }
</script>
javascript html textbox focus
13个回答
690
投票

这样做。

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

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

你的脚本是

<script>
function setFocusToTextBox(){
    document.getElementById("mytext").focus();
}
</script>

197
投票

无论如何,您可以在兼容 HTML5 的浏览器上使用

autofocus
属性。从版本 10 开始,甚至可以在 IE 上运行。

<input name="myinput" value="whatever" autofocus />

81
投票

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

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

检查是否有帮助。


41
投票

如果您的代码是:

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

如果你使用 JQuery,你也可以使用这个:

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

请记住,您必须先绘制输入

$(document).ready()


23
投票

对于纯 JavaScript,请尝试以下操作:

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

3
投票

我以前只用这个:

<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 属性。

请注意:我想更新这个旧线程,显示所询问的示例,并为那些仍在阅读本文的人提供更新、更简单的更新。 ;)


2
投票

如前所述,document.forms也可以工作。

function setFocusToTextBox( _element ) {
  document.forms[ 'myFormName' ].elements[ _element ].focus();
}

setFocusToTextBox( 0 );
// sets focus on first element of the form

2
投票

window.onload 是最初放置焦点 onblur 是在您单击文本区域之外时将焦点置于文本区域,或避开文本区域 模糊

<textarea id="focus"></textarea>
<script>
  var mytexarea=document.getElementById("focus");
  window.onload=function() {
    mytexarea.focus();
  }
</script>

1
投票

如果您的

<input>
<textarea>
具有属性
id=mytext
,则使用

mytext.focus();

function setFocusToTextBox() {
    mytext.focus();
}
<body onload='setFocusToTextBox()'>
  <form>
    <input type="text" id="mytext"/>
  </form>
</body>


1
投票

这个例子对我有用

$(document).ready(function () {
document.getElementById('TextBox').focus();
}

1
投票

考虑分享该主题的一些边缘案例。 如果您的内容正在重新加载(例如从 API 动态 DOM 加载结果并将焦点设置在结果的第一项上)添加属性 autofocus 将不是您的解决方案,它仅在第一次加载时有效,第二次 DOM 更改将不起作用,但在静态 DOM 或单页加载。如果您有动态组件加载数据,则简单的 .focus() 将失败,因为在 focus() 时触发尚未创建的元素的焦点或 DOM 尚未完成模糊。对于这种情况,期望添加延迟时间(setTimeout 函数),以便为焦点应用到 DOM 中新创建或重新创建的元素提供时间。我的案例是从 API 加载数据并关注第一个结果。 添加

  var el = document.getElementById(focusId); el.focus();
解决了这个问题,因此 DOM 可以在不增加延迟的情况下完成模糊。


0
投票
<input type="text" class="word"> //html code

let theinput = document.querySelector(".word"); //Get the input 
 theinput.focus(); // focus on input 
   

0
投票

试试这个:

$('.modal').on('shown.bs.modal', function () {
  setTimeout(function() {
    $("input#yourFieldId").addClass('modal-primary-focus').focus();
   }, 500);
});
© www.soinside.com 2019 - 2024. All rights reserved.