Vue 的 el-form 组件可以使用自定义校验规则进行表单验证。自定义校验规则可以通过传递一个函数来实现,该函数接受要校验的字段的值作为参数,并返回一个布尔值或一个 Promise 对象。
下面是一个示例,演示如何在 el-form 中使用自定义校验规则:
-
-
<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>
-
-
-
<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` 函数并传递错误消息来报告校验失败。
这只是一个简单的例子,你可以根据你的具体需求来定义更复杂的自定义校验规则。