antdesign的表格里嵌套输入框,并对输入框做校验

<template>

  <div class="tableForm">

    <div style="width:1200px;margin:50px auto;">

      <a-table :columns="columns" :data-source="data">

        <a-form-model

          slot="wage"

          slot-scope="text,record"

          :ref="record.index"

          :model="record"

          :rules="rules"

          style="width:300px;height:40px"

        >

          <a-form-model-item prop="wage">

            <a-input style="width:100%" v-model="record.wage" />

          </a-form-model-item>

        </a-form-model>

        <span slot="action">

          <a>详情</a>

        </span>

      </a-table>

    </div>

    <div style="margin-top:50px;overflow:hidden;text-align:center">

      <a-button @click="submit" size="large" type="primary">提交</a-button>

    </div>

  </div>

</template>

<script>

export default {

  name: 'tableForm',

  data() {

    let validateWage = (rule, value, callback) => {

      let reg = /^[+]?[0-9]+(\.[0-9]{1,3})?$/

      if (value === '') {

        callback(new Error('请输入值'))

      } else if (!reg.test(value)) {

        callback(new Error('请输入整数或小数'))

      } else {

        callback()

      }

    }

    return {

      form: {},

      rules: {

        wage: [{ validator: validateWage, trigger: 'change' }]

      },

      columns: [

        {

          title: '姓名',

          dataIndex: 'name',

          key: 'name',

          align: 'center',

          scopedSlots: { customRender: 'name' }

        },

        {

          title: '工资',

          dataIndex: 'wage',

          width: '300px',

          key: 'wage',

          align: 'center',

          scopedSlots: { customRender: 'wage' }

        },

        {

          title: '操作',

          key: 'action',

          align: 'center',

          scopedSlots: { customRender: 'action' }

        }

      ],

      data: [

        { key: 1, wage: '', name: '张三', index: 'form1' },

        { key: 2, wage: '', name: '张三', index: 'form2' },

        { key: 3, wage: '', name: '张三', index: 'form3' }

      ]

    }

  },

  methods: {

    submit() {

      let submitFlag = false

      for (var key in this.$refs) {

        this.$refs[key].validate((valid) => {

          if (valid) {

            // alert('submit!')

          } else {

            submitFlag = true

            return false

          }

        })

      }

      if (!submitFlag) {

        alert('submit!')

      }

    }

  }

}

</script>

<style lang="less" scoped>

</style>

 

在Element UI中,`el-table`通常用于展示数据表格,而`el-form`则用于表单验证。要在`el-table`中嵌套`el-form`并实现校验,你需要按照以下步骤操作: 1. **创建表格结构**: - 在`<el-table>`标签内,为每一行数据创建一个`<template>`,在这个模板中包含一个`<el-row>`作为表单的容器,并嵌套一个`<el-form>`。 ```html <el-table :data="tableData"> <el-table-column prop="itemName" label="名称"></el-table-column> <template slot-scope="scope"> <el-row> <el-form :model="formItem" ref="formRef"> <!-- 表单元素如输入框、选择项等 --> </el-form> </el-row> </template> </el-table> ``` 2. **绑定数据和表单模型**: - `formItem`应该是一个数组,对应表格中的每一行,每个元素都是一个单独表单的模型。 - 使用`ref`属性获取`el-form`组件以便于后续的验证操作。 ```javascript export default { data() { return { tableData: [ { itemName: 'Item 1', formItem: {} }, { itemName: 'Item 2', formItem: {} } ], formItem: {}, }; }, //... } ``` 3. **监听表单变化并触发验证**: - 可以在`watch`或者`methods`中设置一个事件处理器,每当`formItem`的数据发生变化时,对表单进行验证。可以利用`el-form`提供的`validate`方法。 ```javascript methods: { handleFormItemChange(item) { this.$refs['formRef'][item.index].validate(); }, }, ``` 4. **表单验证规则**: - 在`el-form`上添加`rules`属性,定义对应的验证规则。例如,你可以使用`required`、`max`、`min`等验证属性。 ```html <el-form :rules="{ required: true }"></el-form> ``` 5. **处理验证结果**: - 验证完成后,需要检查返回的验证结果,如果存在错误,可以显示相应的提示信息。 ```javascript handleFormItemValidate(validated) { if (!validated) { console.log('表单验证失败'); } }, ``` 记得在适当的地方触发`handleFormItemChange`和`handleFormItemValidate`方法,比如当用户提交或修改表单内容时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值