Elementuid的Form 组件提供了表单验证的功能,只需要通过 rules 属性传入约定的验证规则,并将 Form-Item 的 prop 属性设置为需校验的字段名即可。
写个简单的例子:
1.基本用法:
<el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
<el-form-item label="活动名称" prop="name">
<el-input v-model="ruleForm.name"></el-input>
</el-form-item>
</el-form>
<script>
export default {
data() {
return {
ruleForm: {
name: '',
},
rules: {
name: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' }
]
}
};
}
}
</script>
如果它不止这种简单的校验,可以通过validator另外再加方法:
<script>
export default {
data() {
return {
ruleForm: {
name: '',
},
rules: {
name: [
{ required: true, message: '请输入活动名称', trigger: 'blur' },
{ min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' },
{ validator: this.otherRules, trigger: 'blur' }
]
}
};
},
methods(){
otherRules(rule, val, callback) {
if () {
callback(new Error(xxx'))
} else if () {
callback(new Error('xxxxx'))
} else {
callback()
}
}
}
}
</script>
注:像长度这种校验也可以放到validator对应的方法里,但是不能为空的校验最好与它分开(不然有时候错误提示会是英文的形式)
2.规则校验:
submit(){
this.$refs.ruleFrom.validate(valid => {
if(valid){
//校验通过后的操作
}
})
}
有时候我们并不想整个表单一起校验,只想校验其中某一个:
submit(){
this.$refs.ruleFrom.validateField('name',valid => {
if(!valid){
//校验通过后的操作
}
})
}
3.清空校验
(1)初始化的时候就出现了错误验证。在表单初始赋值后,加如下代码:(按道理讲,此处应该加clearValidate(),但是并不起作用,,,根据自身情况定吧*_*)
this.$refs.ruleForm.resetFields()
(2)如果有一个审批意见选项,同意的时候就进行表单验证,不同意的时候就直接提交,在选择审批意见时需要先清空表单验证:
this.$refs.ruleForm.clearValidate();
this.$refs.ruleForm.clearValidate(['name']);//如果清除某个表单的校验
//或者在el-form-item层加ref
<el-form-item ref="name">...</el-form-item>
this.$refs.name.clearValidate()
总结一下二者的区别:
clearValidate() //仅清空校验
resetFields() //不仅清空校验,还重置字段值
posted on
浙公网安备 33010602011771号