<!DOCTYPE HTML>
<html>
<body>
<script>
    //想实现的功能:如果文本框内容不为数字,则清除内容,使该文本框继续保持焦点,重新输入.
    //却发现在IE下可以正常实现该功能,在FireFox下却不行!
    function blur1(obj){
        if(isNaN(obj.value)){
            obj.value="";
window.setTimeout(function(){
             obj.focus();
},50)
            return false;
        }
        else
            return true;
    }
</script>    
     
<input type="text" onblur="blur1(this)" />
</body>
</html>
延时执行下试试

解决方案 »

  1.   

    应该是focus和blur的顺序问题,google一下会有一些资料,但是比较有力的证据暂时没有找到~,个人意见,仅供参考:
    focus须在blur之后,也就是说:火狐中要focus正常聚焦,则要确保当前没有正在执行的blur事件。楼主的代码,focus的时候 blur还正在执行,所以无效。而加上setTimeout之后,即使时间设置成0 因为它本质上是异步 所以也会有时间差,而blur则就在这个时间差内完成,完成之后focus自然正常执行~