在中文输入法状态中,每键入一个拼音都会触发input事件,造成频繁回调。通常有以下两种解决方案
改变触发事件
改为使用compositionend
即可。但对老版本IE和部分手机端浏览器兼容性较差
- compositionstart:官方解释,触发于一段文字的输入之前,也就是在输入一段需要的文本(第一个字母开始)或语音开始输入时会触发。
- compositionupdate:正插入新字符;
- compositionend:已经成功插入字符;
使用函数防抖
函数防抖(debounce),就是指触发事件后,在 n 秒内函数只能执行一次。通常用于搜索框搜索输入、窗口的resize事件等
-
触发事件后等待n秒再执行,如果n秒内事件再次被触发则清除计时器,重新等待n秒再执行
-
触发事件后立即执行,且n秒内事件再次被触发则无相应
网友评论