我在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)
这里的问题是当onChange函数完成时,它将焦点设置为下一个元素.因此,您在该函数中设置的任何焦点只会在onChange结束后消失.
你可以通过多种方式解决这个问题.可能最容易使用超时.
将焦点线更改为以下内容:
var el = document.getElementById(x);
window.setTimeout(function(){el.focus();}, 100);
Run Code Online (Sandbox Code Playgroud)