这是jquery的bug吗?

<html>
  <head>
    <title>test.html</title>
    
    <meta http-equiv="keywords" content="keyword1,keyword2,keyword3">
    <meta http-equiv="description" content="this is my page">
    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
    
    
    <script type="text/javascript" src="scripts/jquery.js"></script>
    <script type="text/javascript">
        $(document).ready(function(){
            $("#t1,#t2").blur(function(){
                $(this).val().length==0
                $(this).focus();                
            });
            
        });
    </script>
  </head>  
  <body>
     

      <form name="Name" action="post">

<input name="textfield" id="t1" type="text"> <input name="textfield" id="t2" type="text">

<input name="Submit" type="submit" value="Submit">

</form> </body> </html>




就是一个 text(t1) 获得焦点后 点击另一个 text(t2)

cpu就上去了

貌似死循环

有人来解释一下吗?
问题补充:
to: bohemia (资深程序员)



我用 blue 只是为了让体验更好

记得好像以前用自己写的js

类似功能好象此没有问题



所以最最好不要在blur中处理;

hehe..你想他循环,他不循环都不行;
你上面 的代码相当于

[code="java"] $("#t1").blur(function(){

$(this).val().length==0

$(this).focus();

        });   

        $("#t2").blur(function(){   
            $(this).val().length==0   
            $(this).focus();   
        });   [/code]

对每个输入框失去焦点的时候,立刻进行聚焦;

但是:
当t1聚焦的时候,t2未开始出发正常;
当t1取消聚焦的时候,t1自动获取焦点,也正常;

不正常的是:
当t1的聚焦是由于t2获取焦点引起的,
即:t1失去焦点;t2获取焦点; 然后t1聚焦;这个时候t2也失去了焦点,t2又开始聚焦,这样开始循环了.
所以这个时候,t2在获取焦点后也处理和t1相同的逻辑; 这个时候两者就开始循环了.

[quote]我用 blue 只是为了让体验更好
记得好像以前用自己写的js
类似功能好象此没有问题 [/quote]

这个跟自己写js和是否用jQuery没关系的;都是同样的结果;

当然不是bug,blur触发的是焦点离开的事件,[code="javascript"]$("#t1,#t2").blur(function(){})[/code]你这样同时注册到两个元素上,然后function里又是有[code="javascript"]$(this).focus();[/code],有移动焦点的操作,如果焦点在#t1,你点#t2时,会调用#t1的blur事件,然后执行#t1的这个focus(),这时焦点不在#t2上会调用#t2的blur,焦点又回到#t2上,然后。。。
一直这样下去,死循环。

不是jquery的bug
解决办法如下:

[code="javascript"]


<META http-equiv=keywords content=keyword1,keyword2,keyword3>  
<META http-equiv=description content="this is my page">  


<!--<link rel="stylesheet" type="text/css" href="./styles.css">-->  
<script src="http://code.jquery.com/jquery-latest.js"></script>
<SCRIPT type=text/javascript>  
    $(document).ready(function(){ 
        var isActive=false;
        $("#t1,#t2").blur(function(){  
            if(!isActive&&$(this).val().length==0){
                isActive=true;
                $(this).focus();  
            }else{
                isActive=false;
            }

        });  

    });  
</SCRIPT>  



  <FORM name=Name action=post><P>             
      <INPUT id=t1 name=textfield>  
      <INPUT id=t2 name=textfield>  
    </P>  
    <P>    
      <INPUT type=submit value=Submit name=Submit>  
    </P>  

</FORM>  
<BODY>

[/code]