将keyup写在keydown里面,然后执行效果就很有点奇怪,究竟是怎么执行的呢?第一次:输出1
第二次:输出2、3
第三次:输出4、5、6
第四次:输出7、8、9、10
第五次……怎么执行的次数还和第几次输入有关系代码如下<!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 type="text/javascript" src="js/jquery-1.3.2.min.js"></script>
<script type="text/javascript" language="javascript">
var num=1;
$(document).ready(function(){
    $("#txt1").keydown(function(){  
        $("#txt1").keyup(function(){
            $("#spanTest1").html($("#spanTest1").html()+num+"<br/>");
            num++;
        });
    });
});
</script>
</head>
<body>
    <div>
    <input type="text" id="txt1" />
    <span id="spanTest1">测试执行了几遍<br /></span><br />
    </div>
    </form>
</body>
</html>

解决方案 »

  1.   

    我也很不解,默认被楼主发现bug了?
      

  2.   

    1、你每次keydown的时候 他都会添加一个keyup的事件处理函数
    2、这些keyup处理函数是绑定的,不是替换的,所以的你keyup处理函数就在不断增多1个
      

  3.   

    你这样再试试~
    <!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 type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript" language="javascript">
    var num=1;
    $(document).ready(function(){
        $("#txt1").keydown(function(){  
    $(this).get(0).onkeyup = function(){$("#spanTest1").html($("#spanTest1").html()+num+"<br/>");
                num++;};
        });
    });</script>
    </head>
    <body>
        <div>
        <input type="text" id="txt1" />
        <span id="spanTest1">测试执行了几遍<br /></span><br />
        </div>
        </form>
    </body>
    </html>
      

  4.   


    写东西的时候写错位置,然后半天没发现何以执行效果会如此诡异。
    我现在搞不懂keydown、keyup在这里是怎么执行的了。
      

  5.   

    二楼是对的.
    这个$("#txt1").keyup其实是添加一个绑定.也就是addEventListener或者AttachEvent.
    而不是直接domObject.onkeyup才是给这个事件世界赋值.也就是替换掉以前的