使用 input 监听 input 中文输入,会被每次输入的字母打断,下面就解决这个问题
$('input') .off() .on('input',function(){ if($(this).prop('comStart')) return; //输入完成后进行的操作 console.log($(this).val()); }) .on('compositionstart',function(){ $(this).prop('comStart', true); }) .on('compositionend',function(){ $(this).prop('comStart', false); //输入完成后进行的操作 console.log($(this).val()); })
compositionstart 是在 input 事件之前触发。
经试验,compositionend 则是在 input 事件之后触发,因此在 compositionend 事件里面也加入输入完成后需要进行的下一步操作。