项目需求
输入框只能输入特定的字符,比如数字字母与-,输入其他字符就要弹出提示信息提醒用户,但用户在频繁输入不合法字符后,提示信息会不断弹出,影响界面效果
解决办法
使用防抖函数,在用户停止操作一段时间后(时间长短可以自己设定),再触发输入框的内容校验
<template>
<el-input
v-model="accountNo"
@input="handleInput"
>
</el-input>
</template>
<script>
import debounce from 'lodash/debounce' // 这里直接使用lodash封装好的debounce函数
export default {
data(){
return {
accountNo: ''
}
}
methods: {
handleInput: debounce(function() {
let reg = /^[a-zA-Z0-9\-]+$/
let res = reg.test(accountNo)
if(this.accountNo && !res){
this.accountNo = ''; // 如果校验不通过,清空输入框内容
return this.$message({
message: '只能输入数字字母与-',
type: 'warning',
duration: 1000
})
}
}, 500)
}
}
</script>