以下Jquery事件代码中变量为什么会重复输出-问答-阿里云开发者社区-阿里云

开发者社区> 问答> 正文
阿里云
为了无法计算的价值
打开APP
阿里云APP内打开

以下Jquery事件代码中变量为什么会重复输出

<div id="search">
    <input type="text" placeholder="请输入关键字..." id="searchInput">
</div>
$("#search").on('focus', '#searchInput', function(event) {
    var _this = $(this);
    $("#searchInput").on('keydown', _this, function(e) {
        if(e.keyCode == 13) { //Enter键
            var keyword = $.trim(_this.val());
            console.log(keyword);
            //以下是ajax操作
            //.............
        }
    });
});

以上代码当鼠标先focus在input并输入文字然后input失去焦点一次后重新获得焦点,这时按下enter会输出两个keyword值,每次重复这样做数量都会+1,这时什么回事呢

展开
收起
小旋风柴进 2016-03-24 13:10:38 1828 0
2 条回答
写回答
取消 提交回答
  • 一生有你llx
    专注物联网

    第二次focus的时候,#searchInput上被绑定上了第二个keydown的listener
    第N次focus就会绑上N个Keydown的listener

    虽然keydown之前似乎会发生focus,但这里其实完全不用关心focus嘛

    var $input = $("#searchInput").on('keydown', function(e) {

    if(e.keyCode == 13) { //Enter键
        var keyword = $.trim($input.val());
        console.log(keyword);
        //以下是ajax操作
        //.............
    }

    });

    2019-07-17 19:12:38
    赞同 展开评论 打赏
  • 小旋风柴进

    第二次focus的时候,#searchInput上被绑定上了第二个keydown的listener
    第N次focus就会绑上N个Keydown的listener

    虽然keydown之前似乎会发生focus,但这里其实完全不用关心focus嘛

    var $input = $("#searchInput").on('keydown', function(e) {
        if(e.keyCode == 13) { //Enter键
            var keyword = $.trim($input.val());
            console.log(keyword);
            //以下是ajax操作
            //.............
        }
    });
    2019-07-17 19:12:38
    赞同 展开评论 打赏
问答分类:
相关产品:
问答排行榜
最热
最新
相关课程
更多
相关电子书
更多
《0代码搭应用》
立即下载
不止代码
立即下载
低代码开发师(初级)实战教程
立即下载