for表单自定义validator 验证未生效
页面存在两个表单 对其中的一个表单进行校验 结果自定义的validator 验证未生效,想知道如何解决
ruleseditPassword: {newPassword: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{ pattern: /^[a-z0-9_-]{3,15}$/, message: '密码为数字,小写字母,大写字母,长度为 3 - 15位' }
],
surePassword: [
{ validator: validatePass2, trigger: 'blur' }
]
}
var validatePass2 = (rule, value, callback) => {if (value === '') {
callback(new Error('请再次输入密码'))
} else if (value !== this.loginPassword.newPassword) {
callback(new Error('两次输入密码不一致!'))
} else {
callback()
}
}
<el-formref="loginform"
v-loading="loading"
:model="loginPassword"
:rules="ruleseditPassword"
label-width="120px"
:inline="true"
class="form-inline"
label-position="right"
>
this.$refs.['loginform'].rules的打印结果
回答
surePassword: [ { validator: validatePass2, trigger: 'blur' }
]
能打印出,说明校验函数绑定没错,是校验函数内部问题,尝试将(value === '')
改为(!value)
value在从未输入时,或resetFields
后,值为undefined
required表示必填项,你自定义验证的话,不需要required,所有的验证规则都写在validator函数里面,你看看官网是怎么做的:
https://element.eleme.cn/#/zh-CN/component/form
我上面说的required在自定义验证的时候,还是可以加的,会多一个红色的星号,表示必填项。
再检查下你表单里面prop、v-model是否绑定正确了(你有两个表单,字段有没有冲突)
<el-form-item label="密码" prop="newPassword"> <el-input type="password" v-model="loginPassword.newPassword" autocomplete="off"></el-input>
</el-form-item>
<el-form-item label="确认密码" prop="surePassword">
<el-input type="password" v-model="loginPassword.surePassword" autocomplete="off"></el-input>
</el-form-item>
prop 有写么
以上是 for表单自定义validator 验证未生效 的全部内容, 来源链接: utcz.com/a/39606.html