在input输入框输入中文时,需要即时查询出匹配输入内容的结果,一般我们会使用input事件监听用户输入事件,但是在输入汉语 拼 音时,也会触发input事件,前端就会不断发送请求,导致无法正常拼写中文。
var flag= false;
$('#ajax_input').on('compositionstart', function (){
flag= true;
});
$('#ajax_input').on('compositionend', function () {
flag= false;
});
$('#ajax_input').on('input', function () {
if (!cpLock) {
// TODO
}
});
原理:
当浏览器有非直接的文字输入时,compositionstart事件会以同步模式触发.
当浏览器是直接的文字输入时,compositionend会以同步模式触发.
当元素监听到
compositionstart事件,给input中事件加锁,禁止input中事件执行,当元素监听到
compositionend事件,给input中事件解锁,正常执行。