input事件引发的输入法错乱问题

给元素绑定onCompositionStart和onCompositionEnd事件,并制定标记位,外加个防抖。

注意:

并不是先执行onCompositionStart再执行onCompositionEnd再执行onInput的顺序;

而是执行onCompositionStart,生成“虚文本”,同时会触发onInput事件;

当onCompositionEnd之后,才是真实文本。

兼容性:(兼容ie和谷歌哦,好用!)

<input type="text" id="test">

var compositionFlag = true;

var timer = null;

var tempValue = '';

$('#test').on('compositionstart',function(){

  compositionFlag = false;

  tempValue = $('#test').val();//虚文本值

  console.log(tempValue);

})

$('#test').on('compositionend',function(){

  compositionFlag = true;

})

$('#test').on('input',function(){

  if(timer){

    clearTimerout(timer);

  }

  timer = setTimeout(function(){

    if(compositionFlag){

      console.log($('#test').val());//真实文本

      //这里做你需要的逻辑

    }

  },1000)

})

 

posted @ 2020-06-12 15:17  你风致  阅读(644)  评论(0编辑  收藏  举报