附测试代码如下,页面有2个input,设置为当失去焦点时判断是否为空,如果为空则将焦点置回,但是运行时出现问题,当焦点在Text1上时,如果不填入内容,直接点击Text2则会进入死循环,直到浏览器堆栈溢出,请教有何解决办法?
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <script src="js/jquery-1.4.4.js" type="text/javascript"></script>
    <script language="javascript" type="text/javascript">
        $(document).ready(function ()
        {
            $("#Text1").blur(function ()
            {
                if ($("#Text1").val() == "")
                {
                    $("#Text1").focus();
                }
            });
            $("#Text2").blur(function ()
            {
                if ($("#Text2").val() == "")
                {
                    $("#Text2").focus();
                }
            });
        });
    </script>
</head>
<body>
    <div>
        <input id="Text1" type="text" /></div>
    <div>
        <input id="Text2" type="text" /></div>
</body>
</html>

解决方案 »

  1.   

    等了半天都没人回答哦,另外试了下focusout这个函数,不能用blur
                $("#Text1").focusout(function ()
                {
                    if ($("#Text1").val() == "")
                    {
                        alert("不能为空");
                        $("#Text1").focus();
                    }
                });
                $("#Text2").focusout(function ()
                {
                    if ($("#Text2").val() == "")
                    {
                        alert("不能为空");
                        $("#Text2").focus();
                    }
                });
    在focus()前要使用alert弹出对话框才能阻断焦点移到下一个元素上。很奇怪,也很郁闷。请高手解释下这个机制是怎么回事?有没有其他解决办法
      

  2.   

    焦点在text1上时 你点击text2 这时text1的blur事件触发 焦点置回了text1 此时因为焦点是从text2上置回到text1上 所以又触发了text2的blur事件 将焦点又要置回到text2 这又触发了text1的blur事件 ...每次都是这么循环 一直死循环下去 最后浏览器崩了~~
      

  3.   


    自己解决牛人
    alert获得了焦点,改变了焦点,个人估计
      

  4.   

    lz,你说的 “如果不填入内容,直接点击Text2则会进入死循环”这很正常啊!
    由于你在失去焦点的事件中写了,让元素重新得到焦点。所以就会焦点一旦移出此元素就会再次触发你的失去焦点事件... 反复就会循环的。你想要什么效果呢?