// 中文输入法时英文不触发键盘事件 search.addEventListener('compositionstart',function(){ flag = false; }); search.addEventListener('compositionend',function(){ flag = true; }); search.oninput = function(){ setTimeout(function(){ if(flag){ _this.doSearchTwo() } },0); }
通过查阅资料得知在输入中文(包括语音识别时)会先后触发compositionstart、compositionend事件,类似于keydown和keyup的组合。
触发compositionstart时,文本框会填入 “虚拟文本”(待确认文本),同时触发input事件;在触发compositionend时,就是填入实际内容后(已确认文本)。
先看看 compositionstart
的描述 和 compositionend
的 描述
compositionstart
事件触发于一段文字的输入之前(类似于 keydown
事件,但是该事件仅在若干可见字符的输入之前,