vue 怎样根据后端返回来制定检验规则 如后端返回0 则任意包含 特殊字符,大写字母,小写字母,数字一种即可,如后端返回1则需包含两种,如后端返回2则需要包含三种,如返回3则需要包含四种检验规则
时间: 2023-06-14 15:05:37 浏览: 87
vue的学习代码-vue的指令部分 如 vue-if、vue-for、vue-model、vue-bind...
你可以在 Vue 中使用自定义验证规则来实现这个功能。首先,在组件中定义一个 `validatePassword` 方法,该方法接收参数 `rule`、`value` 和 `callback`,并根据后端返回的值来制定相应的检验规则:
```javascript
methods: {
validatePassword(rule, value, callback) {
const level = this.passwordLevel // 假设后端返回的密码等级存在 this.passwordLevel 中
const regex = [
/^.*(?=.*[a-z]).*$/,
/^.*(?=.*[A-Z]).*$/,
/^.*(?=.*\d).*$/,
/^.*(?=.*[@#$%^&+=]).*$/
]
const message = [
'至少包含小写字母',
'至少包含大写字母',
'至少包含数字',
'至少包含特殊字符'
]
let count = 0
for (let i = 0; i < regex.length; i++) {
if (level > i) {
if (regex[i].test(value)) {
count++
}
}
}
if (count >= level) {
callback()
} else {
callback(new Error(message[level - 1]))
}
}
}
```
然后,在表单中使用 `el-form-item` 组件的 `rules` 属性来指定验证规则:
```html
<el-form-item label="密码" prop="password">
<el-input type="password" v-model="form.password" autocomplete="off" @blur="$refs.form.validateField('password')" />
</el-form-item>
```
```javascript
data() {
return {
form: {
password: ''
},
rules: {
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{ validator: this.validatePassword, trigger: 'blur' }
]
}
}
}
```
在这个例子中,我们假设后端返回的密码等级为一个数字,即 `level` 变量。然后,我们使用 `regex` 数组来存储四种检验规则,使用 `message` 数组来存储每种规则对应的提示信息。在 `validatePassword` 方法中,我们使用一个 `for` 循环来检查输入的密码是否符合后端返回的等级要求。如果符合要求,则调用 `callback` 方法返回一个 `undefined` 值;否则,调用 `callback` 方法返回一个错误信息。最后,在表单的 `rules` 属性中,我们使用 `validator` 属性来指定刚刚定义的 `validatePassword` 方法作为验证规则。
阅读全文