Vue+ ElementUI动态表单验证


最近遇到个需求,动态表单,可以通过按钮增加表单项,大体是这样的:

代码如下:

 <div class="operate">
        <span>报文过滤</span>
        <div class="operate-right">
          <div class="operate-btn">
            <el-button
              size="medium"
              type="primary"
              icon="el-icon-plus"
              @click.prevent="addExp()"
            >新增过滤条件</el-button>
            <el-button
              size="medium"
              type="primary"
              icon="el-icon-folder-checked"
              @click.prevent="testExp"
            >报文过滤测试</el-button>
          </div>
          <div class="exp">
            <el-form-item label="报文操作" prop="operate">
              <el-select v-model="form.operate" clearable placeholder="请选择方式" class="filter-item">
                <el-option v-for="item in tablelList" :key="item" :label="item" :value="item" />
              </el-select>
            </el-form-item>
            <template v-for="(item, index) in form.expItem">
              <el-form-item
                label="正则表达式"
                :prop="'expItem.' + index +'.exp'"
                :key="index"
                :rules="{required: true, message: '请输入表达式', trigger: 'blur'}"
              >
                <el-input v-model="item.exp" style="width: 370px;" />
                <el-button
                  size="mini"
                  type="danger"
                  icon="el-icon-delete"
                  @click="removeExp(item,index)"
                >删除</el-button>
              </el-form-item>
            </template>
          </div>
        </div>
      </div>

js部分:

  addExp() {
     this.form.expItem.push({
          exp: null
        });
    },
    removeExp(item, index) {
      if (this.form.expItem.length <= 1) {
        this.$notify({
          title: '警告',
          message: '至少填写一条',
          type: 'warning'
        });
        return;
      }
      this.form.expItem.splice(index, 1);
    },

遇到的问题

逻辑还是很好实现的,就是通过循环一个表单数组,动态向数组添加或者删除项,但是在验证表单项的时候却遇到个问题,直接写:prop="expItem"时,虽然有必填的*号,但是并未做验证,搜索一圈后发现这里的:prop绑定的有问题,这里应该写成:prop="'v-for绑定的数组.' + index + '.v-model绑定的变量'" , 我这里就是:prop="'expItem.' + index +'.exp'" , 这样就做到了每一项都做到了验证


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM