el-table表格中插入表单效验

1. 不能在单独写一个数组,应该改变数据结构。

 objList: {
          rules: {
              Name: {
                  required: true,
                  message: "比例名称不能为空",
                  tirgger: ["blur", "change"],
              },
          },
          blszList: [],
      },

2. 如果字段固定的话,rules 可以定义好也可以写在行内。

<el-form :model="objList" ref="formRef" :rules="objList.rules">
<el-table border ref="table" class="classTableHeight" :data="objList.blszList" :max-height="tableHeight">
    <el-table-column label="序号" align="center" width="60" type="index" />
    <el-table-column label="比例名称" :render-header="addRedStar" align="center" 
        prop="Name" min-width="200" show-overflow-tooltip>
        <template slot-scope="scope">
            <el-form-item :prop="'blszList.' + scope.$index + '.Name'" 
        :rules="objList.rules.Name" style="width: 100%">
                <el-input v-model.trim="scope.row.Name" placeholder="请输入比例名称" 
          style="width: 100%"></el-input>
            </el-form-item>
        </template>
    </el-table-column>
    <el-table-column label="分期项目一" :render-header="addRedStar" align="center" 
                  prop="money1" min-width="450" style="display: flex">
        <template slot-scope="scope">
            <el-form-item
                :prop="'blszList.' + scope.$index + '.money1'"
                :rules="[
                    { required: true, message: '比例不能为空', trigger: 'blur' },
                    { pattern: /(^(\d|[1-9]\d)(\.\d{1,2})?$)|(^100$)/, 
                      message: '请输入0-100之间的数字', trigger: 'blur' },
                ]"
            >
                <el-input v-model.trim="scope.row.money1" 
                      maxlength="6" placeholder="请输入比例"></el-input>
            </el-form-item>
            &nbsp; &nbsp; &nbsp;
            <el-form-item
                :prop="'blszList.' + scope.$index + '.money2'"
                :rules="[
                    { required: true, message: '金额不能为空', trigger: 'blur' },
                    { pattern: /^(-?[0-9]{0,11}|0)([.][0-9]{0,4})?$/, 
                      message: '请输入数字', trigger: 'blur' },
                ]">
                <el-input v-model.trim="scope.row.money2" maxlength="16" 
                      placeholder="请输入金额"></el-input>
            </el-form-item>
        </template>
    </el-table-column>
    <el-table-column label="操作" align="center" width="180" fixed="right">
        <template slot-scope="scope">
            <el-button size="mini" type="text" icon="el-icon-edit"          
               @click="blszSave(scope.$index)">保存</el-button>
        </template>
    </el-table-column>
</el-table>
</el-form>

3. 最后在保存时,跟据不同的refs来进行单行效验。

// 效验单行
validateField(form, index) {
  let result = true;
  for (const item of this.$refs[form].fields) {
    if (item.prop.split(".")[1] === index.toString()) {
      this.$refs[form].validateField(item.prop, (error) => {
// 这里可以输入定义在 rules中的"message"信息 
      this.$message.warning(error);
    if (error !== "") {
      result = false;
}
});
}
      if (!result) break;
}
      return result;
},
// 保存
blszSave(index) {
     let result = this.validateField("formRef", index);
     if (result) return this.$message.success("保存成功");
},

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值