您的位置:首页 > Web前端 > JavaScript

compositionEnd 和 input 事件(中文输入法问题)

2016-10-29 00:00 621 查看
网上用 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 事件之前,就会执行两次,就得继续填坑。。。

暂时就这么地吧
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  JavaScript