JavaScript不会将焦点传递给元素

时间:2010-06-22 05:06:52

标签: 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 
     }
}

P.S。我从这样的表单输入中调用此函数:

onchange="check(this.id)"

2 个答案:

答案 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();
    }
}