elementui validate
使用 Element UI 进行表单验证
Element UI 提供了强大的表单验证功能,可以通过 el-form 和 el-form-item 组件结合 rules 属性实现。以下是一个完整的验证示例:
<template>
<el-form :model="form" :rules="rules" ref="form" label-width="100px">
<el-form-item label="用户名" prop="username">
<el-input v-model="form.username"></el-input>
</el-form-item>
<el-form-item label="密码" prop="password">
<el-input v-model="form.password" type="password"></el-input>
</el-form-item>
<el-form-item>
<el-button type="primary" @click="submitForm('form')">提交</el-button>
</el-form-item>
</el-form>
</template>
<script>
export default {
data() {
return {
form: {
username: '',
password: ''
},
rules: {
username: [
{ required: true, message: '请输入用户名', trigger: 'blur' },
{ min: 3, max: 10, message: '长度在 3 到 10 个字符', trigger: 'blur' }
],
password: [
{ required: true, message: '请输入密码', trigger: 'blur' },
{ min: 6, max: 20, message: '长度在 6 到 20 个字符', trigger: 'blur' }
]
}
}
},
methods: {
submitForm(formName) {
this.$refs[formName].validate((valid) => {
if (valid) {
alert('验证成功!')
} else {
console.log('验证失败')
return false
}
})
}
}
}
</script>
自定义验证规则
Element UI 允许定义自定义验证规则,通过 validator 函数实现:

rules: {
password: [
{ validator: (rule, value, callback) => {
if (value === '') {
callback(new Error('请输入密码'))
} else if (!/^[a-zA-Z0-9]+$/.test(value)) {
callback(new Error('密码只能包含字母和数字'))
} else {
callback()
}
}, trigger: 'blur' }
]
}
动态验证规则
可以根据条件动态修改验证规则:
methods: {
changeValidation() {
this.rules.password = [
{ required: true, message: '新验证规则', trigger: 'blur' }
]
}
}
重置表单验证
可以调用 resetFields 方法重置表单和验证状态:

methods: {
resetForm(formName) {
this.$refs[formName].resetFields()
}
}
异步验证
Element UI 支持异步验证,只需在 validator 函数中使用异步操作:
rules: {
username: [
{ validator: (rule, value, callback) => {
setTimeout(() => {
if (value === 'admin') {
callback(new Error('用户名不能为admin'))
} else {
callback()
}
}, 1000)
}, trigger: 'blur' }
]
}
表单验证方法
el-form 组件提供了几个有用的验证方法:
validate:验证整个表单validateField:验证特定字段clearValidate:清除特定字段的验证结果
// 验证特定字段
this.$refs.form.validateField('username')
// 清除特定字段验证
this.$refs.form.clearValidate('username')






