您的位置:首页 > 其它

input事件 输入中文再进行搜索的问题

2018-02-01 12:49 330 查看
触发compositionstart时,文本框会填入 “虚拟文本”(待确认文本),同时触发input事件;在触发compositionend时,就是填入实际内容后(已确认文本)。
var cpLock = true;
$('.com_search_input').on('compositionstart', function () {
cpLock = false;
//      console.log("compositionstart")
});
$('.com_search_input').on('compositionend', function () {
cpLock = true;
//      console.log("compositionend")
});
$(".com_search_input").on("input",function(e){
e.preventDefault();
var _this = this;
// console.log("input");
setTimeout(function(){
if (cpLock) {
//开始写逻辑
console.log("逻辑")
}
},0)
})


为什么使用延时器?
  因为选词结束的时候input会比compositionend先一步触发,此时cpLock还未调整为true,所以不能触发到console.log("逻辑"),故用setTimeout将其优先级滞后。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐