淘先锋技术网

首页 1 2 3 4 5 6 7

 

 

 

表单中有如下配置项,阶梯条件可以动态增加,这里涉及到的验证问题:

 

Element ui 表单验证

普通校验(model、rules、ref)

个体校验:单独为每个item写rules

<el-form-item
   prop="email" label="邮箱"
    :rules="[
    { required: true, message: '请输入邮箱地址', trigger: 'blur' },
    { type: 'email', message: '请输入正确的邮箱地址', trigger: ['blur', 'change'] }
    ]"
	>
    <el-input v-model="email"></el-input>
</el-form-item>

集体校验:统一在某个位置写rules

airdropRules: {
                // 基本信息校验
                actTitle: [ { required: true, message: "请输入标题", trigger: "blur" } ],
                tokenId: [ { required: true, message: "请选择活动id", trigger: "change" } ],
      },


动态校验

  • 还是以上三个属性,但在 Prop 上有所不同,因校验原理在于,校验规则知道比较哪些值,而动态校验上,值是获取了,但是在动态表单上;校验规则匹配不上哪个需校验对象,从而在首次校验上会出现校验失效的情况。
  • 解决办法是给 prop 加上指定值的规则而不再是原先的固定 name 了,如 :‘数组**.’ + index + '.**value’
<div v-for="(item, index) in airdropForm.ladderList" :key=index>
    <el-form-item class="formTitle" :label="`阶梯${index+1}`"/>
    <el-form-item label="可用余额数量"
        :prop="`ladderList.` + index + '.holdBalance'"
        :rules="[ { required: true, message: '请设置可用余额数量', trigger: 'blur' } ],"
        >
        <el-input v-model="item.holdBalance" clearable></el-input>
    </el-form-item>
</div>

 

 

 

有一篇写的很全的校验文章:
https://www.cnblogs.com/qdlhj/p/12332407.html
https://www.jb51.net/article/159108.htm