为了账号安全,请及时绑定邮箱和手机立即绑定

为什么监听keydown实例中, 按下下一个键, 才会出现前一个键的值?

<!DOCTYPE html>
<html>

<head>
    <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
    <title></title>
    <style>
    .left div,
    .right div {
        width: 500px;
        height: 50px;
        padding: 5px;
        margin: 5px;
        float: left;
        border: 1px solid #ccc;
    }
    
    .left div {
        background: #bbffaa;
    }
    em{
        font-weight: 900;
        color: red;
    }
    </style>
   <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script>
</head>

<body>
    <h2>keydown()与keyup()事件</h2>
    <div class="left">
        <h4>测试一</h4>
        <div class="aaron">监听keydown输入:
            <input class="target1" type="text" value="" /><br />
            按下显示输入的值:<em></em>
        </div>
        <h4>测试二</h4>
        <div class="aaron">监听keyup输入: 
            <input class="target2" type="text" value="" /><br />
            松手显示输入的值:<em></em>
        </div>
    </div>

    <script type="text/javascript">
    //监听键盘按键
    //获取输入的值
    $('.target1').keydown(function(e) {
        $("em:first").text(e.target.value)
    });

    //监听键盘按键
    //获取输入的值
    $('.target2').keyup(function(e) {
        $("em:last").text(e.target.value)
    });

    </script>

</body>

</html>


正在回答

3 回答

顺序:第一次keydown  input的值还是空  而此时获取input的结果为空  然后值跑到input框里  然后keyup

第二次 keydown  input的值为第一次输入的字符串  获取也是第一次的   然后第二次输入的跑到input框里面  然后keyup

以此类推

0 回复 有任何疑惑可以回复我~

楼上正解

0 回复 有任何疑惑可以回复我~

在下一节找到的答案: 

在input元素上绑定keydown事件会发现一个问题:

每次获取的内容都是之前输入的,当前输入的获取不到

keydown事件触发在文字还没敲进文本框,这时如果在keydown事件中输出文本框中的文本,得到的是触发键盘事件前的文本,而keyup事件触发时整个键盘事件的操作已经完成,获得的是触发键盘事件后的文本


7 回复 有任何疑惑可以回复我~
#1

LouisDuan

还是你明白
2019-04-16 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

为什么监听keydown实例中, 按下下一个键, 才会出现前一个键的值?

我要回答 关注问题
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号