我在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
}
}
P.S。我从这样的表单输入中调用此函数:
onchange="check(this.id)"
答案 0 :(得分:7)
这里的问题是当onChange函数完成时,它会将焦点设置为下一个元素。因此,您在该函数中设置的任何焦点只会在onChange结束后消失。
你可以通过多种方式解决这个问题。可能最容易使用超时。
将焦点线更改为以下内容:
var el = document.getElementById(x);
window.setTimeout(function(){el.focus();}, 100);
答案 1 :(得分:2)
您已经有了对元素(this
)的引用,因此您不需要传递id:
<input onchange="check(this);">
和JS:
function check(el) {
if (uc_check == false) {
el.value = '';
el.focus();
}
}