blur 与 focus 事件相处之道

On 2010年03月10日, in Javascript, by Kane

表单的处理一般分成2种: field 单独 onblur 时进行验证并提示 与 在提交表单时验证全部 field (并行与单独验证)。 今天遇到了一个问题,可以说是低级错误。单独说一下 每个 field onblur 时验证的问题。


<input type="text" onblur="test(this)" />

function test(o){
   if(document.getElementById(o).value=='')
   {
       alert('test');
       document.getElementById(o).focus();
    }
}

上面这种情况下是可以正常运行,但下面的情况是当多个field需要同时验证的时候就有问题了


<input type="text" onblur="test(this)" />
<input type="text" onblur="test(this)" />
function test(o){

if(document.getElementById(o).value=='')
 {
 alert('test');
 document.getElementById(o).focus();
 }
}

在这种情况下会出现死循环,到时IE 卡死 cpu100% 。解决方法就是多field的时候,不能 又blur又focus。 鱼与熊掌不可兼得也…

Tagged with:  

Leave a Reply