el-form内嵌el-table并实现校验功能

 

 

     <el-form
            :rules="RuleformDataSave"
            :model="formDataSave"
            slot="dialog-form"    
            ref="formDataSave"
            label-width="25%"
            size="mini"
          >
            <el-form-item
              label="方案名称"
              prop="scenarioName"
            >
            <el-table
              v-if="formDataSave.IsRelevance==1"
              :data="formDataSave.formDataTable"
              border
              header-align="center"
            >
              <el-table-column
                prop="fiveClass"
                label="五级分类"
                align="center"
              />
              <el-table-column
                label="调研频率"
                align="center"
              >
                <template slot="header">
                  <p class="headerP">
                    <span
                      class="sp"
                      style="color: red; font-size: 12px"
                    >*</span>&nbsp;调研频率
                  </p>
                </template>
                <template slot-scope="scope">
                  <el-form-item
                    :prop="`formDataTable.${scope.$index}.frequencyTable`"
                    class="tabFormItem"
                    :rules="RuleformDataSave.frequencyTable"
                  >
                    <el-select
                      v-model="scope.row.frequencyTable"
                      filterable
                    >
                      <el-option
                        v-for="item in periodList"
                        :key="item.value"
                        :label="item.label"
                        :value="item.value"
                      />
                    </el-select>
                  </el-form-item>
                </template>
              </el-table-column>
            </el-table>

            <el-form-item
              v-if="formDataSave.IsRelevance!=1"
              label="调研频率"
              prop="frequency"
            >
              <el-select
                v-model="formDataSave.frequency"
                style="width:56%"
              >
                <el-option
                  v-for="item in periodList"
                  :key="item.value"
                  :label="item.label"
                  :value="item.value"
                />
              </el-select>
            </el-form-item>
          </el-form>

<script>
  data () {
    return {
      formDataSave: {
        formDataTable: [],
        FormPeriodList: [],'
      },
      RuleformDataSave: {
        scenarioName: { required: true, message: '方案名称不能重复', trigger: ['change', 'blur'] },
        IsRelevance: { required: true, message: '请选择', trigger: 'change' },
        frequencyTable: [{ required: true, message: '请选择五级分类', trigger: 'blur' }]
      }
    }
  },

</script>

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、付费专栏及课程。

余额充值