vue 一个el-form-item 绑定多个 input 或者select 校验

<el-form-item label="触发规则:" prop="ruler" v-if="decustom">
          <div v-for="(i,index) in contentForm.ruler" :key="index" class="umar-b20 error_edit">
            <div class="flex flex_between">
              <div class="flex">
                <span>事件类型<span class="umar-lr20">等于</span></span>
                <el-form-item :prop="'ruler.'+index+'.ruleType'" :rules="rules.ruleType">
                  <el-select v-model="i.ruleType" placeholder="请选择">
                    <el-option v-for="item in rules1Options"
                      :key="item.value"
                      :label="item.label"
                      :value="item.value">
                    </el-option>
                  </el-select>
                </el-form-item>
                <span class="umar-l20 umar-b20">且</span>
              </div>
              <div class="umar-r20 umar-b20 fz-20 c-p" style="color: #409eff">
                <span @click="addRules"> + </span>
                <span class="umar-lr20" @click="deleteRules(index,contentForm.ruler)" v-if="contentForm.ruler.length>1"> - </span>
              </div>
            </div>
            <div class="flex">
              <el-form-item :prop="'ruler.'+index+'.ruleMoney'" :rules="rules.ruleMoney">
                <el-select v-model="i.ruleMoney" placeholder="请选择">
                  <el-option v-for="item in rules2Options"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item :prop="'ruler.'+index+'.judge'" :rules="rules.judge">
                <el-select v-model="i.judge" placeholder="请选择" class="umar-lr20">
                  <el-option v-for="item in judgeOptions"
                    :key="item.value"
                    :label="item.label"
                    :value="item.value">
                  </el-option>
                </el-select>
              </el-form-item>
              <el-form-item :prop="'ruler.'+index+'.money'" :rules="rules.money">
                <el-input v-model="i.money" placeholder="请输入" clearable></el-input>
              </el-form-item>
            </div>
          </div>
        </el-form-item>

:prop="'ruler.'+index+'.ruleType'" :rules="rules.ruleType"

:prop  里面ruler是和循环的绑定数组对应,ruleType是下拉框或者输入框绑定的model值

:rules 里面的rules 是整体form表单的rules值,ruleType是定义的校验,写在data里面的rules里面

rules: {
        ruleType:[
          { required: true, message: '请选择', trigger: 'change' }
        ],
        ruleMoney:[
          { required: true, message: '请选择', trigger: 'change' }
        ],
        judge:[
          { required: true, message: '请选择', trigger: 'change' }
        ],
        money:[
          { required: true, message: '请输入', trigger: 'blur' }
        ],
      }

  • 1
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
可以使用`ElRow`和`ElCol`组件来实现两列四行的布局,每行包含两个`ElFormItem`组件。 示例代码如下: ```vue <template> <el-form> <el-row> <el-col :span="12"> <el-form-item label="姓名" prop="name"> <el-input v-model="form.name"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="年龄" prop="age"> <el-input v-model="form.age"></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="性别" prop="gender"> <el-radio-group v-model="form.gender"> <el-radio label="male">男</el-radio> <el-radio label="female">女</el-radio> </el-radio-group> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="职业" prop="job"> <el-select v-model="form.job" placeholder="请选择"> <el-option label="工程师" value="engineer"></el-option> <el-option label="教师" value="teacher"></el-option> <el-option label="医生" value="doctor"></el-option> </el-select> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="12"> <el-form-item label="手机号码" prop="phone"> <el-input v-model="form.phone"></el-input> </el-form-item> </el-col> <el-col :span="12"> <el-form-item label="邮箱" prop="email"> <el-input v-model="form.email"></el-input> </el-form-item> </el-col> </el-row> <el-row> <el-col :span="24"> <el-form-item> <el-button type="primary" @click="submitForm">提交</el-button> </el-form-item> </el-col> </el-row> </el-form> </template> <script> export default { data() { return { form: { name: '', age: '', gender: '', job: '', phone: '', email: '' } }; }, methods: { submitForm() { this.$refs.form.validate(valid => { if (valid) { console.log('submit form'); } else { console.log('validation failed'); return false; } }); } } }; </script> ``` 效果如下: ![el-form-item两列四行的布局](https://img-blog.csdnimg.cn/2021110319480992.png)

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值