当前位置: 首页 > article >正文

element ui 对数组里面的多个相同的字段进行校验在

element ui 对数组里面的多个相同的字段进行校验

在 Element UI 中,如果需要对数组中的多个相同字段进行校验(例如动态生成的表单字段),可以通过动态绑定 prop 和 rules 来实现。以下是具体的实现方法:


示例场景

假设有一个数组 items,数组中的每个对象包含一个字段 value,我们需要对每个 value 进行校验。


实现代码

vue

<template>
  <el-form :model="form" :rules="rules" ref="form">
    <!-- 动态生成表单项 -->
    <el-form-item
      v-for="(item, index) in form.items"
      :key="index"
      :label="'字段 ' + (index + 1)"
      :prop="'items.' + index + '.value'"
      :rules="rules.value"
    >
      <el-input v-model="item.value"></el-input>
    </el-form-item>

    <el-form-item>
      <el-button type="primary" @click="submitForm">提交</el-button>
      <el-button @click="addItem">添加字段</el-button>
    </el-form-item>
  </el-form>
</template>

<script>
export default {
  data() {
    return {
      form: {
        items: [
          { value: '' }, // 初始字段
        ],
      },
      rules: {
        value: [
          { required: true, message: '请输入字段值', trigger: 'blur' },
          { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' },
        ],
      },
    };
  },
  methods: {
    // 提交表单
    submitForm() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          alert('提交成功');
          console.log('表单数据:', this.form.items);
        } else {
          console.log('校验失败');
          return false;
        }
      });
    },
    // 添加新字段
    addItem() {
      this.form.items.push({ value: '' });
    },
  },
};
</script>

关键点说明

  1. 动态绑定 prop

    • 使用 :prop="'items.' + index + '.value'" 动态绑定每个表单项的 prop

    • prop 的格式需要与 form 对象的结构一致。例如,items.0.value 表示 form.items[0].value

  2. 动态绑定 rules

    • 使用 :rules="rules.value" 动态绑定校验规则。

    • 所有字段共享相同的校验规则。

  3. form 数据结构

    • form.items 是一个数组,每个数组项是一个对象,包含需要校验的字段(如 value)。

  4. 动态添加字段

    • 通过 addItem 方法动态向 form.items 中添加新字段。

  5. 表单校验

    • 使用 this.$refs.form.validate 方法触发表单校验。

    • 如果所有字段都通过校验,valid 为 true,否则为 false


校验效果

  • 每个字段都会根据 rules.value 的规则进行校验。

  • 如果某个字段未通过校验,Element UI 会自动显示错误提示。

  • 动态添加的字段也会自动应用校验规则。


扩展:自定义校验规则

如果需要为每个字段设置不同的校验规则,可以在 rules 中动态生成规则。例如:

javascript

rules: {
  value: (index) => [
    { required: true, message: `请输入字段 ${index + 1}`, trigger: 'blur' },
    { min: 3, max: 5, message: '长度在 3 到 5 个字符', trigger: 'blur' },
  ],
},

然后在 el-form-item 中动态绑定规则:

vue

:rules="rules.value(index)"


总结

  • 使用动态 prop 和 rules 可以实现对数组中多个相同字段的校验。

  • 通过 form.items 动态管理字段数据,支持动态添加和删除字段。

  • Element UI 的表单校验机制非常灵活,能够满足复杂的表单校验需求。


http://www.kler.cn/a/508315.html

相关文章:

  • C++速览之智能指针
  • Java语言的数据结构
  • Json转换类型报错问题:java.lang.Integer cannot be cast to java.math.BigDecimal
  • 菜品管理(day03)
  • css中的阴影详解
  • 浅谈云计算19 | OpenStack管理模块 (上)
  • php函数性能优化中应注意哪些问题?
  • 【机器学习:二十七、决策树集合】
  • java使用poi-tl自定义word模板导出
  • 【机器学习:三十二、强化学习:理论与应用】
  • Ubuntu安装docker 、docker-compose
  • Github 2025-01-17 Java开源项目日报 Top8
  • Python wxPython 库实现文本框与按钮交互示例
  • Android wifi列表中去自身的热点
  • 代码合并冲突解决push不上去的问题
  • 《初始Linux:多平台兼容的强者,无缝衔接各类设备的桥梁 》
  • 【CC2640R2F】香瓜CC2640R2F之SPI读写W25Q80
  • 【老白学 Java】线程的并发问题(二)
  • JDK 8 - 新日期格式化类 DateTimeFormatter 使用
  • Spring boot框架下的RabbitMQ消息中间件
  • Spring声明式事务
  • 第22篇 基于ARM A9处理器用汇编语言实现中断<四>
  • “AI智能防控识别系统:守护安全的“智慧卫士”
  • 【进程与线程】进程的基础
  • 深度学习-88-大语言模型LLM之基于langchain的检索链
  • 【网络协议】【http】【https】AES-TLS1.2