zoukankan      html  css  js  c++  java
  • vue列表中表单的验证

    先上效果图:

    在点击确认的时候会验证带有验证的字段

    嵌套逻辑:

    表单
        表格
            表格项
                表单项
                表单项
            表格项
        表格
    表单

    代码部分:

    <!-- 注意此处的model,需要一个对象,而我们的数据是一个列表,我们列表封装成一个对象放在这里就ok了 这里不需要指定rules-->
    <el-form :model="{'sysDictDataList':sysDictDataList}"  ref="sysDictDataListRules">
            <el-table
              :data="sysDictDataList"
              style=" 100%">
              <el-table-column
                label="字典类型">
                <template slot-scope="scope">
                  <el-form-item>
                    <el-input v-model="scope.row.dictType" :disabled="true"/>
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column
                prop="dictType"
                label="数据标签">
                <template slot-scope="scope">
                                <!-- 注意此处的prop,需要使用此类型,不能直接填字段名  rules指向该字段的验证规则 -->
                  <el-form-item :prop="'sysDictDataList.'+scope.$index+'.dictLabel'" :rules="sysDictDataListRules.dictLabel">
                    <el-input v-model="scope.row.dictLabel" placeholder="请输入数据标签"/>
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column
                prop="dictType"
                label="数据键值">
                <template slot-scope="scope">
                  <el-form-item :prop="'sysDictDataList.'+scope.$index+'.dictValue'" :rules="sysDictDataListRules.dictValue">
                    <el-input v-model="scope.row.dictValue" placeholder="请输入数据键值"/>
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column
                prop="dictType"
                label="显示排序">
                <template slot-scope="scope">
                  <el-form-item :prop="'sysDictDataList.'+scope.$index+'.dictSort'" :rules="sysDictDataListRules.dictSort">
                    <el-input-number v-model="scope.row.dictSort" controls-position="right" :min="0"/>
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column
                label="备注">
                <template slot-scope="scope">
                  <el-form-item :prop="'sysDictDataList.'+scope.$index+'.remark'" :rules="sysDictDataListRules.remark">
                    <el-input v-model="scope.row.remark" placeholder="请输入内容"/>
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column
                label="状态">
                <template slot-scope="scope">
                  <el-form-item>
                    <el-radio-group v-model="scope.row.status">
                      <el-radio
                        v-for="dict in statusOptions"
                        :key="dict.dictValue"
                        :label="dict.dictValue"
                      >{{dict.dictLabel}}
                      </el-radio>
                    </el-radio-group>
                  </el-form-item>
                </template>
              </el-table-column>
              <el-table-column
                label="操作">
                <template slot-scope="scope">
                  <el-form-item>
                    <el-button @click="deleteDetails(scope.$index,sysDictDataList)">删除</el-button>
                  </el-form-item>
                </template>
              </el-table-column>
            </el-table>
          </el-form>

    数据:

                sysDictDataList: [],   // 字典详细列表
                sysDictDataListRules: { // 字典详细列表的验证
              dictLabel: [
                {required: true, message: "数据标签不能为空", trigger: "blur"}
              ],
              dictValue:[
                {required: true, message: "数据键值不能为空", trigger: "blur"}
              ],dictSort:[
                {required: true, message: "排序不能为空", trigger: "blur"}
              ],remark:[
                {required: true, message: "备注内容不能为空", trigger: "blur"}
              ]
            }

    验证方法:

                 this.$refs['sysDictDataListRules'].validate(valid =>{
                    if (valid){
                      console.log('验证成功,提交');
                    }
                  });

    注意:如果是根据不同条件展示不同验证表单,使用v-if可能会有意想不到的错误发生,我使用v-show解决此类问题

  • 相关阅读:
    查看mongodb的状态
    superset----缓存之redis
    superset--presto sql
    linux----之tcpdump小用
    Git版本回退的最佳方式
    SpringBoot 热部署
    不使用Tomcat,手写简单的web服务
    Spring Security 入门
    Maven总结
    git高级用法
  • 原文地址:https://www.cnblogs.com/BRIGHTM00N/p/12510317.html
Copyright © 2011-2022 走看看