问答详情
源自:4-1 jQuery键盘事件之keydown()与keyup()事件

keydown与keyup为什么长按一个键,总是会显示?我看有同学也有这个问题,但没有好的回答,有人会吗?下面是代码。

<!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="https://www.imooc.com/static/lib/jquery/1.9.1/jquery.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>


提问者:AtlantisKing 2018-05-25 17:42

个回答

  • 椰知
    2019-02-11 21:49:18

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

  • 风君子说
    2018-10-12 14:29:16

    我这里keyup长按不松不会触发显示

  • 慕粉3512110
    2018-06-03 23:31:46

    W3C的标准,按下键不松会一直触发keydown事件。

  • Smell_rookie
    2018-06-02 08:36:20

    keydown方法中长按会跟随按下的显示,这属于按下的方法的正常显示。keyup则是等你长按之后松开键盘才会显示出来

  • qq_海誓是海市山盟卒蜃楼_0
    2018-05-28 13:44:43

    个人认为是电脑键盘的构造问题,监控的是键盘按下时产生输入信号或者输入信号截断的电位变化