美文网首页
ElementUI中复杂表单校验

ElementUI中复杂表单校验

作者: _半城 | 来源:发表于2020-09-15 19:56 被阅读0次

本文介绍了两种特殊表单的校验方式。

1. 对象里包含数组
2. 对象里包含对象

首先看第一种,对象里包含数组,表单通过v-for生成
示例代码如下:

  <el-form
      :model="ruleForm"
      :rules="rules"
      ref="ruleForm"
    >
     <el-form-item label="年龄" prop="age">
        <el-input v-model.number="ruleForm.age"></el-input>
      </el-form-item>
      <!-- start---看这里!---start -->
      <div v-for="(item,index) in ruleForm.citiesList" :key="index">
        <el-form-item
          :label="index==0?'去过的城市:':''"
          :prop="`citiesList[${index}].name`"
          :rules="citiesList.name"
          required
        >
           <el-input type="text" v-model="item.name"></el-input>
           <el-button type="text" @click="addCity()">新增</el-button>
        </el-form-item>
     <!-- end---看这里!---end-->
      </div>
      <el-form-item>
        <el-button type="primary" @click="submitForm('ruleForm')">提交</el-button>
      </el-form-item>
    </el-form>
<script>
  export default {
    data() {
      var checkAge = (rule, value, callback) => {
        // 在此编写具体校验逻辑
        if (!value) {
          return callback(new Error('年龄不能为空'));
        }
      };
      return {
        ruleForm: {
          age: '',
          citiesList: [
              name: ''
          ]
        },
        rules: {
          age: [
            { validator: checkAge, trigger: 'blur' }
          ]
        },
        // 注意此处
        citiesList: {
            name: [
                {required:true,message: '请输入城市名称', trigger: ['change', 'blur']}
            ]
        }
      };
    },
    methods: {
      submitForm(formName) {
        this.$refs[formName].validate((valid) => {
          if (valid) {
            alert('submit!');
          } else {
            console.log('error submit!!');
            return false;
          }
        });
      }
      addCity() {
        this.ruleForm.citiesList.push([ name: ''])
      }
    }
  }
</script>

对象中包含对象

第二种情况示例代码如下:

<el-form :model="form" :rules="rules">
   <el-form-item label="收件人邮箱:" prop="mailVo.receiver" required>
      <el-input  type="text"  v-model="form.mailVo.receiver" />
   </el-form-item>
</el-form>
data () {
  return {
    form: {
          mailVo: {  receiver: '' }
      },
    rules: {
        receiver: [{ required: true, message: '请输入收件人邮箱', trigger: ['blur', 'change'] }]
      }
}

表单绑定了 form.mailVo.receiver,如果像上面代码中rules那样写,是起不了校验作用的。
只需改成:

  rules: {
        'mailVo.receiver': [{ required: true, message: '请输入收件人邮箱', trigger: ['blur', 'change'] }]
      }

一定要记得加引号~

相关文章

  • ElementUI中复杂表单校验

    本文介绍了两种特殊表单的校验方式。 1. 对象里包含数组2. 对象里包含对象 首先看第一种,对象里包含数组,表单通...

  • elementui表单自定义校验及嵌套验证

    自定义校验规则额外参数 多个输入框校验逻辑一致 ElementUI表单校验prop的嵌套写法页面中的表单经常会有校...

  • elementUI表单校验

    感谢度娘 element-ui中表单验证的三种方式 第一种常用方式:表单上加rules{object} 这种方式需...

  • elementui表单校验

    进行表单校验需要通过rules 属性传入约定的验证规则,并且需要在在容器上绑定prop...

  • elementUI踩坑

    ElementUI 表单校验没反应的问题 因为同一页面下写了多个表单,我需要对所有表单都进行校验无误后再向后台发起...

  • elementUI中select下拉框设置了多选multiple

    问题描述 : 在elementUI中 , Form表单设置了rules校验规则 , 正常情况下 , 进页面是不会触...

  • elementUI form表单校验报错

    elementUI form表单动态增加表单项使用v-for进行表单校验时报错,报错信息如下: 主要原因是el-f...

  • elementUI表单校验高级用法

    elementUI的表单校验相信大家都有了解,下面这篇文章我将从表单验证的基本用法逐渐过渡到表单验证的高级用法。 ...

  • elementUI中动态表单的校验

    首先需要再data中定义表单变量 循环的表单数据 表单的校验规则如下 通过给每一个循环的表单数据添加对应的校验规则...

  • elementUI Form表单校验 不通过问题

    遇到一个问题,适用elementUI的表单校验时,select校验总是不用过代码如下: 经过多方排查,终于找到问题...

网友评论

      本文标题:ElementUI中复杂表单校验

      本文链接:https://www.haomeiwen.com/subject/uewzektx.html