ant-design-vue Table+Form表单实现表格内置表单验证,可自定义验证规则,触发必填项

本文详细展示了如何在Vue应用中使用AntDesign库创建一个包含动态表单字段(如国家、代码和描述)的表格,并进行数据源管理和表单验证的代码片段。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

代码示例如下:

<!--  -->
<template>
  <a-button type="primary" style="padding-left: 10px; padding-right: 10px" @click="handleAddRow">
    <template #icon><plus-outlined /></template>新增
  </a-button>
  <a-form :model="dataSource" ref="AddModalForm" :labelCol="{ style: { width: '10px' } }">
    <a-table :dataSource="dataSource" :columns="columns" size="small" rowKey="id">
      <template #bodyCell="{ column, index, record }">
        <template v-if="column.dataIndex === 'nation'">
          <a-form-item label=" " name="nation" :rules="[{ required: true, message: '请输入名称,长度小于20字符', validator: () => customCheck(index, 'nation') }]">
### 实现 Ant Design Vue `a-table` 组件中动态生成表单验证 #### 动态行的数据结构设计 为了使每行都能独立进行表单校验,需确保每一行都有唯一的键值用于区分不同的输入框。这可以通过为表格中的每一行分配唯一标识符来实现。 ```javascript const columns = [ { title: '名称', dataIndex: 'name', key: 'name' }, { title: '操作', render: (_, record, index) => ( <div> {/* 使用record.key作为prop */} <a-form-item prop={`input${index}`}> <a-input v-model={record.input} /> </a-form-item> </div> ) } ]; ``` #### 表单模型配置与规则设定 对于每一个可能被编辑的字段,在初始化时就为其指定相应的校验规则,并将其关联到具体的表单上[^1]。 ```javascript import { defineComponent, reactive } from "vue"; export default defineComponent({ setup() { let dataSource = reactive([ // 初始化数据源... ]); const validateRulesObj = { input: [{ required: true, message: '请输入内容!', trigger: 'blur' }] }; return { dataSource, validateRulesObj }; } }); ``` #### 触发表单验证逻辑 当需要对整个表格内的所有可编辑单元格执行一次性批量校验时,可通过遍历当前所有的记录并调用各自的校验方法完成这一过程;也可以直接利用框架提供的API接口来进行整体性的提交前检查[^3]。 ```javascript // 方式一:手动逐个触发子组件内Form实例上的validateField() async function handleValidateAll() { try { await Promise.all( this.dataSource.map((item, idx) => this.$refs[`formItemInput${idx}`].$el.form.validateField(`input${idx}`) ) ); alert("全部验证成功!"); } catch (errors) { console.error(errors); } } // 或者方式二:如果使用的是<a-form>包裹,则可以直接调用其内置的方法 this.$refs.wholeTableRef.submit(); ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

柠檬加栤

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值