网上用 compositionstart + compositionend + input 解决中文输入法问题的办法
node.addEventListener('compositionstart', function(){ cpLock = true; }) node.addEventListener('compositionend', function(){ cpLock = false; }) node.addEventListener('input', function(){ if(!cpLock)console.log(this.value); });
现在貌似不好使了
测试了下发现:
compositionend 在 input 事件之后才触发 so。。。
于是只能在compositionend 里 也加上处理代码
node.addEventListener('compositionstart', function(){ cpLock = true; }) node.addEventListener('compositionend', function(){ cpLock = false; if(!cpLock)console.log(this.value); }) node.addEventListener('input', function(){ if(!cpLock)console.log(this.value); });
并不是完美方案:
如果有些浏览器compositionend 在 input 事件之前,就会执行两次,就得继续填坑。。。
暂时就这么地吧