vue中解决模糊搜索输入中文时--未输入完成时触发input事件

在给输入框绑定input或keydown事件时 预期效果是有输入法时,输入中文后触发事件,不希望输一个字母就触发一次事件

可以用到compositionstart,compositionend。 主流浏览器都兼容

我们可以看下官方定义:

根据规范,Composition 事件触发顺序如下:

输入开始时触发 compositionstart

选择字/词完成输入时触发 compositionend

输入过程中每次击键时触发 compositionupdate,包括 start 事件以后立即触发,end 事件以前立即触发

Composition 事件以后触发 input 事件

通过 Composition 事件,在 compositionend 里校验非直接输入,就能有效地避免不恰当的校验时机产生的用户体验问题。

我们可以设置开关flag,给表单绑定compositionstart和compositionend事件

开始输入时触发compositionstart时关闭,禁止触发

输入完成后触发compositionend时开启,触发input事件

<input class="weui-flex__item searchInput f-14" type="text" @compositionstart="flag = false" @compositiοnend="flag = true" v-model.trim="searchName" placeholder="输入选手名称编号进行搜索" @input="search()" />

@compositionstart:官方解释,触发于一段文字的输入之前,也就是在输入一段需要的文本(第一个字母开始)或语音开始输入时会触发。

@compositionend:插入的所有字符;

实现实时搜索必须使用:@input

data里初始为 flag:true

methods中:

search: function search(){

    if(flag){

            搜索方法

      }

}

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容