if((出错)&&(obj.value!=""))
{
   obj.value = "";
   obj.focus();
   return;
}

解决方案 »

  1.   

    不用将焦点再置回去,不然你点下一个textbox时,焦点被置回去,触发下一个textbox的onblur
    发现内容为空,系统将焦点又置回来,然后又触发上一个textbox的onblur,发现内容为空,又置了回去。所以死循环了。
      

  2.   

    seabell(百合心)的代码还是不行,一样的现象。焦点不置回去不行呀,效果会变得很奇怪的,有办法解决死循环吗?
      

  3.   

    “onblur时验证合法性导致抢焦点的死循环”的处理:
    1.空值应被认为合法
    2.杜绝非法初始值,杜绝用script赋非法值
    另外,对于楼主的情况
    请先去掉onfocus事件,按百合心的说法去做,通过测试后再把onfocus事件加上
      

  4.   

    我去掉了onfocus事件,然后按百合心的说法去做,还是死循环。
      

  5.   

    <html>
    <INPUT id="dateinput" onblur="lost(this)" style="Z-INDEX: 101; LEFT: 240px; WIDTH: 168px; POSITION: absolute; TOP: 104px; HEIGHT: 32px" type="text" size="22" runat="server">
    <INPUT id="date2" onblur="lost(this)" style="Z-INDEX: 107; LEFT: 240px; WIDTH: 168px; POSITION: absolute; TOP: 152px; HEIGHT: 32px" type="text" runat="server"> 
    ...</html><script language="javascript">
    function lost(obj)
    {
       var s=obj.value;

       if (s.length != 7 && s != "")
       {
          obj.value = "";
          obj.focus();
          return;
        }
        //......
    }//....
    </script>