elementui validetor
Element UI 表单验证方法
Element UI 提供了 el-form 组件,结合 rules 和 prop 属性实现表单验证。以下是常用的验证方法:
基本表单验证
在 el-form 中定义 rules 规则,并在 el-form-item 上指定 prop 进行绑定:

<template>
<el-form :model="form" :rules="rules" ref="formRef">
<el-form-item label="用户名" prop="username">
<el-input v-model="form.username"></el-input>
</el-form-item>
<el-form-item>
<el-button @click="submitForm">提交</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
form: { username: '' },
rules: {
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' },
{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
]
}
};
},
methods: {
submitForm() {
this.$refs.formRef.validate(valid => {
if (valid) {
alert('验证通过');
} else {
console.log('验证失败');
return false;
}
});
}
}
};
</script>
自定义验证规则
可以通过 validator 自定义验证函数:
rules: {
password: [
{ validator: (rule, value, callback) => {
if (!value) {
callback(new Error('请输入密码'));
} else if (value.length < 6) {
callback(new Error('密码长度不能少于6位'));
} else {
callback();
}
}, trigger: 'blur' }
]
}
动态表单验证
动态增减表单项时,需确保 prop 唯一且正确绑定:

<el-form-item
v-for="(item, index) in form.dynamicItems"
:key="index"
:prop="'dynamicItems.' + index + '.value'"
:rules="{
required: true,
message: '请输入内容',
trigger: 'blur'
}"
>
<el-input v-model="item.value"></el-input>
</el-form-item>
手动清除验证
调用 clearValidate 方法清除特定表单项的验证状态:
this.$refs.formRef.clearValidate(['username']);
异步验证
结合 Promise 或 async/await 进行异步校验:
rules: {
email: [
{ validator: (rule, value, callback) => {
if (!value) {
callback(new Error('请输入邮箱'));
} else {
// 模拟异步校验
setTimeout(() => {
if (!value.includes('@')) {
callback(new Error('邮箱格式不正确'));
} else {
callback();
}
}, 1000);
}
}, trigger: 'blur' }
]
}
常见验证规则
| 规则 | 说明 | 示例 |
|---|---|---|
required |
必填 | { required: true, message: '必填', trigger: 'blur' } |
min / max |
最小/最大长度 | { min: 3, max: 5, message: '长度 3-5', trigger: 'blur' } |
pattern |
正则匹配 | { pattern: /^[a-z]+$/, message: '只能小写字母', trigger: 'blur' } |
type |
内置类型(如 email) |
{ type: 'email', message: '邮箱格式错误', trigger: 'blur' } |
注意事项
prop必须与rules的键名一致,否则验证不生效。- 动态表单需确保
prop使用正确路径(如dynamicItems.0.value)。 - 提交前调用
validate方法进行整体校验。 - 自定义验证函数需调用
callback()表示通过,或传入Error对象表示失败。






