事件返回false时,IE浏览器可以,FireFox浏览器不行.
<!DOCTYPE HTML>
<html>
<body>
<script>
//想实现的功能:如果文本框内容不为数字,则清除内容,使该文本框继续保持焦点,重新输入.
//却发现在IE下可以正常实现该功能,在FireFox下却不行!
function blur1(obj){
if(isNaN(obj.value)){
obj.value="";
obj.focus();
return false;
}
else
return true;
}
</script>
<input type="text" onblur="blur1(this)" />
</body>
</html>
------解决方案--------------------<!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>
延时执行下试试
------解决方案--------------------应该是focus和blur的顺序问题,google一下会有一些资料,但是比较有力的证据暂时没有找到~,个人意见,仅供参考:
focus须在blur之后,也就是说:火狐中要focus正常聚焦,则要确保当前没有正在执行的blur事件。
楼主的代码,focus的时候 blur还正在执行,所以无效。而加上setTimeout之后,即使时间设置成0 因为它本质上是异步 所以也会有时间差,而blur则就在这个时间差内完成,完成之后focus自然正常执行~