最近在做的项目要通过一个安全测评,其中有一个安全要求是前段禁止输入特殊字符,记录一下实现的方式。
首先在main.js中天添加下面这个全局方法,来过滤特殊字符。
Vue.prototype.validForbid = function (value) {
if (value) {
value = value.replace(/[`~!@#$%^&*()_\-+=<>?:"{}|,./;'\\[\]·~!@#¥%……&*()——\-+={}|《》?:“”【】、;‘’,。、]/g, '').replace(/\s/g, "")
}
return value || ''
}
在用到输入框的地方添加on-change事件调用这个全局方法过滤:
<x-input
title="会议名称"
v-model="formadata.subject"
text-align="right"
required
@on-change="$nextTick(()=>{formadata.subject = validForbid(formadata.subject)})"
:is-type="checkSubject"
:show-clear="false"
placeholder="请输入会议名称"
></x-input>
注意要用$nextTick(),不然不生效,试过用$set()和forceUpdate()都没有生效,具体的原因并不清楚,有大佬看到可以解释一下,感激不尽