<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,这时什么回事呢
第二次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操作
//.............
}
});
第二次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操作
//.............
}
});
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。