Javascript Focus()函数无法正常工作

Ita*_*y.B 6 javascript

我有一个文本框,我想设置焦点,但它不起作用.

document.getElementById("txtCity").focus();
Run Code Online (Sandbox Code Playgroud)

任何的想法?

jay*_*aya 15

如果有人搜索的情况与我的类似......我必须先设置一个tabindex属性,然后div才能收到focus()

featured.setAttribute('tabindex', '0');
featured.focus();
console.log(document.activeElement===featured); // true
Run Code Online (Sandbox Code Playgroud)

(我在这里找到了答案:Make div element receive focus

当然,在将焦点设置到子元素之前,请确保 body 元素已准备好。


Rub*_*ini 9

我也遇到了同样的问题。要解决这个问题,请将代码放入 setTimeout 函数中。

function showMeOnClick() {
    // Set text filed focus after some delay
    setTimeout(function() { jQuery('#searchTF').focus() }, 20);
    // Do your work.....
}
Run Code Online (Sandbox Code Playgroud)

  • 超时执行此操作既快又脏 (5认同)

Mar*_*erl 6

也许你在渲染输入元素之前调用JavaScript?将输入元素放在JavaScript之前或等到页面加载后再触发JavaScript.

按顺序,它工作得很好:

<input type="text" id="test" />
<script type="text/javascript">
  document.getElementById("test").focus();
</script>
Run Code Online (Sandbox Code Playgroud)

jQuery中,您可以将代码放在.ready()方法中,以便在DOM完全加载时首先执行代码:

<script type="text/javascript" src="jquery.min.js"></script>
<script type="text/javascript">
  $(document).ready(function () {
    $("#test").focus();
    // document.getElementById("test").focus();
  });
</script>
Run Code Online (Sandbox Code Playgroud)