问题描述
需要校验用户的输入,长度超出进行错误提示,所以使用了正则表达式进行校验,代码如下。
<van-field v-model="location" name="location" label="地点" placeholder="请输入出差地" :rules="[{ required: true, pattern: /^\S{1,7}$/g, message: '请输入7个以内字符' }]" />
在安卓手机上可以正常校验,但iOS系统无论输入几个字符都会提示错误,原因可能是iOS输入法会输入特殊字符
解决方法
- 监听输入,去掉其中的特殊字符再进行判断(实时校验)
watch: {
location(val) {
if (val.replace(/\s/g, '').length > 7) {
// 添加错误处理
// ....
Toast.fail('长度超出')
this.locationError = true
} else {
this.locationError = false
}
}
}
- 定义组件rules的validator方法(点击提交时触发校验)
<van-field v-model="location" name="location" label="地点" placeholder="请输入出差地" :rules="[{ required: true, validator, message: '请输入7个以内字符' }]" />
validator(val) {
return val.replace(/\s/g, '').length > 7 ? false : true
}