表单v-for动态添加的校验,即动态数据项表单验证

👇

:prop="'devInfos.'+index+'.ip'"  // 官方写法
:rules="[{ required: true, message: '请输入设备mac'}]" // 行内写规则
data () {
	return {
		ruleForm: {
        roomName: '',
        maxPeopleNum: '',
        isEnable: false,
        devInfos: [
          {
            id: '',
            ip: '',
            mac: '',
            account: '',
            password: ''
          }
        ]
      },
	}
}

这样就好啦

   <el-form :model="ruleForm" :rules="rules" ref="ruleForm" label-width="100px" class="demo-ruleForm">
        <el-form-item label="会议室名称" prop="roomName">
          <el-input v-model="ruleForm.roomName" placeholder="请输入会议名称"></el-input>
        </el-form-item>
        <el-form-item label="可容纳人数" prop="maxPeopleNum">
          <el-input v-model.number="ruleForm.maxPeopleNum" type="number" placeholder="请输入可容纳人数"></el-input>
        </el-form-item>
        <el-form-item label="停用/启用" prop="isEnable">
          <el-switch v-model="ruleForm.isEnable"></el-switch>
        </el-form-item>
        <div v-for="(item, index) in ruleForm.devInfos" :key="index" >
          <el-form-item class="devInfos" label="设备IP" :prop="'devInfos.'+index+'.ip'" :rules="[{ required: true, message: '请输入设备IP'}]">
            <el-input v-model="item.ip" placeholder="请输入设备IP"></el-input>
          </el-form-item>
          <el-form-item label="设备mac" :prop="'devInfos.'+index+'.mac'" :rules="[{ required: true, message: '请输入设备mac'}]">
            <el-input v-model="item.mac" placeholder="请输入设备mac"></el-input>
          </el-form-item>
          <el-form-item label="设备账号" :prop="'devInfos.'+index+'.account'" :rules="[{ required: true, message: '请输入设备账号'}]">
            <el-input v-model="item.account" placeholder="请输入设备账号"></el-input>
          </el-form-item>
          <el-form-item label="设备密码" :prop="'devInfos.'+index+'.password'" :rules="[{ required: true, message: '请输入设备密码'}]">
            <el-input v-model="item.password" placeholder="请输入设备密码"></el-input>
          </el-form-item>
          <el-form-item label="">
            <el-button type="text" @click="addDevInfo">新增</el-button>
            <el-button v-show="ruleForm.devInfos.length>1" type="text" @click="delDevInfo(index)">删除</el-button>
          </el-form-item>
        </div>
        <el-form-item class="btn">
          <el-button class="cancelBtn" @click="handleClose('ruleForm')">取消</el-button>
          <el-button :loading="btnLoading" class="publishBtn" @click="save('ruleForm')">保存</el-button>
        </el-form-item>
      </el-form>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
你可以使用 Vue Element 的表单验证规则来实现多层循环的动态添加校验规则。下面是一个简单的示例代码,演示了如何使用 v-for 指令循环生成表单,并动态添加校验规则: ```html <template> <el-form ref="form" :model="formData" :rules="formRules" label-width="100px"> <el-form-item v-for="(item, index) in formItems" :key="index" :label="item.label" :prop="item.prop"> <el-input v-model="formData[item.prop]" :placeholder="item.placeholder"></el-input> </el-form-item> </el-form> </template> <script> export default { data() { return { formData: {}, // 表单数据 formItems: [ // 表单配置 { label: '姓名', prop: 'name', placeholder: '请输入姓名' }, { label: '年龄', prop: 'age', placeholder: '请输入年龄' }, // ... ], formRules: {} // 表单校验规则 }; }, mounted() { this.generateFormRules(); }, methods: { generateFormRules() { this.formItems.forEach(item => { // 根据不同的表单生成对应的校验规则 // 这里只是示例,你可以根据实际需求进行修改 this.$set(this.formRules, item.prop, [ { required: true, message: `请输入${item.label}`, trigger: 'blur' }, // 其他校验规则... ]); }); } } }; </script> ``` 在上面的示例中,表单的配置存储在 `formItems` 数组中,你可以根据实际需求自行修改。在 `generateFormRules` 方法中,通过遍历 `formItems` 数组,动态生成表单校验规则,并将其存储在 `formRules` 对象中。最后,在 `<el-form>` 组件上使用 `:rules` 属性绑定表单校验规则。 这样,你就可以实现多层循环动态添加校验规则的功能了。记得根据实际需求修改校验规则的内容。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值