Input禁止输入法,过滤非中英文

借助API

compositionstart
文本合成系统如 input method editor(即输入法编辑器)开始新的输入合成时会触发 compositionstart 事件。
compositionend
当文本段落的组成完成或取消时,compositionend 事件将被触发(具有特殊字符的触发,需要一系列键和其他输入,如语音识别或移动中的字词建议)。
compositionupdate
事件触发于字符被输入到一段文字的时候(这些可见字符的输入可能需要一连串的键盘操作、语音识别或者点击输入法的备选词)

 

Vue自定义指令----过滤掉非英文数字

import Vue from 'vue'

let element = null
let lock = false

vue.directive(' Alphabet', {
    bind: function (el) {
        element = el.queryselector('input')
        element.addEventListener('compositionstart', handleCompositionstart)
        element.addEventListener('compositionend', handleCompositionend)
        element.addEventListener('keyyup', handleKeyup)
    }
})
//监听非直接输入开始
function handleCompositionstart() {
    lock = true
}
//监听非直接输入结束
function handleCompositionend() {
    lock = false
    element.value = replaceSpace(element.value)
}
//键盘按下直接输入
function handleKeyup() {
    if (!lock) element.value = replacespace(element.value)
}
//过滤掉非字母数字
function replacespace(value) {
    return value.replace(/[^A-Za-z0-9]/g, '')
}

 

 

 

 

posted @ 2022-10-18 11:15  coffeemil  阅读(270)  评论(0编辑  收藏  举报