JavaScript不会将焦点传递给元素

ubi*_*con 3 javascript focus

我在JavaScript中有以下函数,if语句的每个部分都正确执行,除了将焦点返回给调用函数的元素.它在IE或Fire Fox中不起作用,浏览器都没有给我一个错误.它对我来说正确的... 为什么它不起作用?

function check(x){

     //doing some stuff

     if (uc_check == false){
          window.alert('Houston, we have a problem.');
          document.getElementById(x).value = '';
          document.getElementById(x).focus(); //this line is not working 
     }
}
Run Code Online (Sandbox Code Playgroud)

PS我从这样的表单输入调用此函数:

onchange="check(this.id)"
Run Code Online (Sandbox Code Playgroud)

des*_*sau 7

这里的问题是当onChange函数完成时,它将焦点设置为下一个元素.因此,您在该函数中设置的任何焦点只会在onChange结束后消失.

你可以通过多种方式解决这个问题.可能最容易使用超时.

将焦点线更改为以下内容:

var el = document.getElementById(x);
window.setTimeout(function(){el.focus();}, 100);
Run Code Online (Sandbox Code Playgroud)