当触发键盘事件时中文输入法下输入英文不触发键盘事件

在输入中文或使用语音识别时,键盘事件处理程序可能会遇到英文输入不触发事件的问题。这是因为系统在输入过程中使用了compositionstart和compositionend事件。compositionstart时显示虚拟文本并触发input事件,而compositionend时输入实际内容。这个过程适用于拼音到汉字的转换或语音输入等需要确认的文本输入情况。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

//  中文输入法时英文不触发键盘事件
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 事件,但是该事件仅在若干可见字符的输入之前,

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值