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("保存成功");
},

el-tableElement UI的一个表格组件,它提供了丰富的功能和选项,包括表单验证。在el-table进行表单验证可以通过自定义校验规则来实现。 下面是一个示例代码,演示了如何在el-table进行表单验证: ```html <template> <el-table :data="tableData" style="width: 100%"> <el-table-column prop="name" label="姓名"> <template slot-scope="scope"> <el-form-item :rules="[{ required: true, message: '请输入姓名', trigger: 'blur' }]"> <el-input v-model="scope.row.name"></el-input> </el-form-item> </template> </el-table-column> <el-table-column prop="age" label="年龄"> <template slot-scope="scope"> <el-form-item :rules="[{ required: true, message: '请输入年龄', trigger: 'blur' }, { type: 'number', message: '年龄必须为数字值' }]"> <el-input-number v-model="scope.row.age"></el-input-number> </el-form-item> </template> </el-table-column> </el-table> </template> <script> export default { data() { return { tableData: [ { name: '张三', age: 18 }, { name: '李四', age: 20 }, { name: '王五', age: '' } ] }; } }; </script> ``` 在上述代码,我们使用了el-form-item组件来包裹el-input和el-input-number组件,并通过:rules属性设置了校验规则。其,required为必填规则,message为提示信息,trigger为触发校验的事件。另外,我们还使用了type为number的校验规则,确保年龄字段为数字值。 请注意,上述代码只是一个简单的示例,实际的表单验证规则可能更加复杂。你可以根据自己的需求进行修改和扩展。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值