Vue 的 el-form 组件可以使用自定义校验规则进行表单验证。自定义校验规则可以通过传递一个函数来实现,该函数接受要校验的字段的值作为参数,并返回一个布尔值或一个 Promise 对象。
下面是一个示例,演示如何在 el-form 中使用自定义校验规则:
javascript
*
<template>
*
<el-form ref="form" :model="form" :rules="rules" label-width="80px">
*
<el-form-item label="用户名" prop="username" :rules="usernameRules">
*
<el-input v-model="form.username">
</el-input>
*
</el-form-item>
*
*
<el-form-item>
*
<el-button type="primary" @click="submitForm">提交
</el-button>
*
<el-button @click="resetForm">重置
</el-button>
*
</el-form-item>
*
</el-form>
*
</template>
*
*
<script>
*
export
default {
*
data(
) {
*
return {
*
form: {
*
username:
''
*
},
*
rules: {
*
username: [
*
{
required:
true,
message:
'请输入用户名',
trigger:
'blur' }
*
]
*
}
*
};
*
},
*
methods: {
*
submitForm(
) {
*
this.
$refs.
form.
validate(
valid => {
*
if (valid) {
*
// 表单验证通过,提交表单
*
console.
log(
'提交表单');
*
}
else {
*
// 表单验证失败,打印错误信息
*
console.
log(
'表单验证失败');
*
return
false;
*
}
*
});
*
},
*
resetForm(
) {
*
this.
$refs.
form.
resetFields();
*
}
*
},
*
computed: {
*
usernameRules(
) {
*
return [
*
{
required:
true,
message:
'请输入用户名',
trigger:
'blur' },
*
{
validator:
this.
validateUsername,
trigger:
'blur' }
*
];
*
}
*
},
*
methods: {
*
validateUsername(
rule, value, callback) {
*
// 自定义校验规则
*
if (value ===
'admin') {
*
callback(
new
Error(
'用户名已存在'));
*
}
else {
*
callback();
*
}
*
}
*
}
*
};
*
</script>
在上述例子中,我们定义了一个表单项 "用户名",并给它设置了两个校验规则,一个是必填规则,一个是自定义规则。自定义规则通过 `validator` 属性指向一个函数,该函数会在校验时调用。函数接受三个参数:`rule` 表示当前字段的验证规则,`value` 表示当前字段的值,`callback` 用来返回校验结果。当校验不通过时,通过调用 `callback` 函数并传递错误消息来报告校验失败。
这只是一个简单的例子,你可以根据你的具体需求来定义更复杂的自定义校验规则。