el-form自定义校验规则

Vue 的 el-form 组件可以使用自定义校验规则进行表单验证。自定义校验规则可以通过传递一个函数来实现,该函数接受要校验的字段的值作为参数,并返回一个布尔值或一个 Promise 对象。

下面是一个示例,演示如何在 el-form 中使用自定义校验规则:


   
   
  1. <template>
  2.   <el-form ref="form" :model="form" :rules="rules" label-width="80px">
  3.     <el-form-item label="用户名" prop="username" :rules="usernameRules">
  4.       <el-input v-model="form.username"> </el-input>
  5.     </el-form-item>
  6.     <el-form-item>
  7.       <el-button type="primary" @click="submitForm">提交 </el-button>
  8.       <el-button @click="resetForm">重置 </el-button>
  9.     </el-form-item>
  10.   </el-form>
  11. </template>
  12. <script>
  13. export default {
  14.   data( ) {
  15.     return {
  16.       form: {
  17.         username: ''
  18.       },
  19.       rules: {
  20.         username: [
  21.           { required: true, message: '请输入用户名', trigger: 'blur' }
  22.         ]
  23.       }
  24.     };
  25.   },
  26.   methods: {
  27.     submitForm( ) {
  28.       this. $refs. form. validate( valid => {
  29.         if (valid) {
  30.           // 表单验证通过,提交表单
  31.           console. log( '提交表单');
  32.         } else {
  33.           // 表单验证失败,打印错误信息
  34.           console. log( '表单验证失败');
  35.           return false;
  36.         }
  37.       });
  38.     },
  39.     resetForm( ) {
  40.       this. $refs. form. resetFields();
  41.     }
  42.   },
  43.   computed: {
  44.     usernameRules( ) {
  45.       return [
  46.         { required: true, message: '请输入用户名', trigger: 'blur' },
  47.         { validator: this. validateUsername, trigger: 'blur' }
  48.       ];
  49.     }
  50.   },
  51.   methods: {
  52.     validateUsername( rule, value, callback) {
  53.       // 自定义校验规则
  54.       if (value === 'admin') {
  55.         callback( new Error( '用户名已存在'));
  56.       } else {
  57.         callback();
  58.       }
  59.     }
  60.   }
  61. };
  62. </script>

在上述例子中,我们定义了一个表单项 "用户名",并给它设置了两个校验规则,一个是必填规则,一个是自定义规则。自定义规则通过 `validator` 属性指向一个函数,该函数会在校验时调用。函数接受三个参数:`rule` 表示当前字段的验证规则,`value` 表示当前字段的值,`callback` 用来返回校验结果。当校验不通过时,通过调用 `callback` 函数并传递错误消息来报告校验失败。

这只是一个简单的例子,你可以根据你的具体需求来定义更复杂的自定义校验规则。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
是的,el-form自定义校验规则required可以是动态的。你可以在自定义校验规则的函数中,根据需要动态地返回校验规则的结果。例如,你可以根据表单中其他字段的值来判断某个字段是否为必填项。具体的实现方式可以参考以下代码: ```javascript // 定义一个动态的required校验规则 const dynamicRequired = (otherFieldValue) => { return (rule, value, callback) => { if (otherFieldValue === 'something') { // 如果满足某个条件,则该字段为必填项 if (!value) { callback(new Error('该字段为必填项')) } else { callback() } } else { // 如果不满足条件,则该字段不需要校验必填项 callback() } } } // 在表单中使用动态的required校验规则 <el-form ref="form" :model="form"> <el-form-item label="其他字段"> <el-select v-model="form.otherField"> <el-option label="条件1" value="something"></el-option> <el-option label="条件2" value="something else"></el-option> </el-select> </el-form-item> <el-form-item label="需要校验必填项的字段"> <el-input v-model="form.requiredField"></el-input> <el-form-item label="是否必填"> <el-switch v-model="form.required"></el-switch> </el-form-item> </el-form-item> </el-form> // 在代码中动态设置required校验规则 this.$refs.form.validateField('requiredField', (errorMessage) => { if (errorMessage) { // 校验失败,需要显示错误提示 this.$message.error(errorMessage) } else { // 校验成功,可以提交表单 this.submitForm() } }, { required: dynamicRequired(this.form.otherField) }) ``` 在上面的代码中,我们定义了一个动态的required校验规则`dynamicRequired`,它接受一个其他字段的值作为参数,返回一个校验函数。在校验函数中,我们根据其他字段的值来判断该字段是否为必填项,如果满足条件,则需要校验必填项,否则不需要校验。在表单中,我们使用了一个开关来控制该字段是否为必填项,当开关关闭时,该字段不需要进行校验。在代码中,我们通过调用`validateField`方法来对该字段进行校验,同时动态地设置了required校验规则。这样,我们就实现了一个动态的required校验规则
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值