vue element el-form 多级嵌套验证的实现示例

针对“vue element el-form 多级嵌套验证的实现示例”的完整攻略,我给您提供以下步骤:

步骤一:配置element-ui

首先需要在项目中引入Element-UI组件库,并按照文档要求进行全局和局部组件的注册,具体步骤可以参考官方文档:https://element.eleme.cn/#/zh-CN/component/installation

步骤二:准备你的表单数据

定义好表单需要验证的数据结构,这里给出一个例子:

formData: {
  name: '',
  age: '',
  job: {
    title: '',
    salary: ''
  }
}

这个数据结构包含三个属性,job属性也是一个对象,有两个属性。在满足某些条件时需要使用到这样的多级嵌套。

步骤三:定义验证规则

在数据结构准备好之后,需要定义验证规则,结合 Element-UI 的表单校验方法进行校验,验证规则也需要满足多级嵌套验证。例如:

rules: {
  name: [
    { required: true, message: '请输入名称', trigger: 'blur' }
  ],
  age: [
    { required: true, message: '请输入年龄', trigger: 'blur' }
  ],
  'job.title': [
    { required: true, message: '请输入职位', trigger: 'blur' }
  ],
  'job.salary': [
    { required: true, message: '请输入薪资', trigger: 'blur' }
  ]
}

上述示例中定义了四个属性的验证规则,其中job.titlejob.salary需要使用字符串引用以表明多级嵌套的层级关系。

步骤四:在表单中设置ref属性,用于在代码中引用表单

设置表单ref属性,可以在代码中直接引用表单实例进行表单校验。

<el-form ref="form" :model="formData" :rules="rules">
  <el-form-item label="名称" prop="name">
    <el-input v-model="formData.name"></el-input>
  </el-form-item>
  <el-form-item label="年龄" prop="age">
    <el-input v-model="formData.age"></el-input>
  </el-form-item>
  <el-form-item label="职位">
    <el-form-item label="职称" prop="job.title">
      <el-input v-model="formData.job.title"></el-input>
    </el-form-item>
    <el-form-item label="薪资" prop="job.salary">
      <el-input v-model="formData.job.salary"></el-input>
    </el-form-item>
  </el-form-item>
</el-form>

在el-form标签中,设置ref属性,并绑定数据模型formData和验证规则rules。

步骤五:在代码中使用表单校验方法

表单校验方法可以在表单实例中直接调用,例如:

this.$refs.form.validate((valid) => {
  if (valid) {
    alert('验证通过')
  } else {
    alert('表单校验失败')
    return false
  }
})

调用$refs.form.validate()方法即可进行表单验证,回调函数中的参数valid表示表单是否验证通过。

示例一

下面是一个验证手机号和邮箱的示例代码:

<el-form ref="form" :model="formData" :rules="rules">
  <el-form-item label="用户名" prop="username">
    <el-input v-model="formData.username"></el-input>
  </el-form-item>
  <el-form-item label="手机号" prop="phone">
    <el-input v-model="formData.phone"></el-input>
  </el-form-item>
  <el-form-item label="邮箱" prop="email">
    <el-input v-model="formData.email"></el-input>
  </el-form-item>
</el-form>
export default {
  data () {
    return {
      formData: {
        username: '',
        phone: '',
        email: '',
      },
      rules: {
        username: [
          { required: true, message: '请输入用户名', trigger: 'blur' }
        ],
        phone: [
          { required: true, message: '请输入手机号', trigger: 'blur' },
          { pattern: /^[1][3,4,5,7,8][0-9]{9}$/, message: '手机号格式不正确', trigger: 'blur' }
        ],
        email: [
          { required: true, message: '请输入邮箱', trigger: 'blur' },
          { type: 'email', message: '邮箱格式不正确', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    submitForm() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          alert('验证通过')
        } else {
          alert('表单校验失败')
          return false
        }
      })
    }
  }
}

上述代码中,需要验证的数据结构包括usernamephoneemail三个属性,也就是单层验证。验证规则包括每个属性需要经过的验证过程。调用表单校验方法$refs.form.validate(),验证表单的填写规范并给出提示信息。

示例二

下面是一个深层次多级嵌套验证的示例代码:

<el-form ref="form" :model="formData" :rules="rules">
  <el-form-item label="工作信息">
    <el-form-item label="公司" prop="company">
      <el-input v-model="formData.company"></el-input>
    </el-form-item>
    <el-form-item label="地址">
      <el-form-item label="省份" prop="address.province">
        <el-input v-model="formData.address.province"></el-input>
      </el-form-item>
      <el-form-item label="城市" prop="address.city">
        <el-input v-model="formData.address.city"></el-input>
      </el-form-item>
      <el-form-item label="街道" prop="address.street">
        <el-input v-model="formData.address.street"></el-input>
      </el-form-item>
    </el-form-item>
  </el-form-item>
</el-form>
export default {
  data () {
    return {
      formData: {
        company: '',
        address: {
          province: '',
          city: '',
          street: '',
        }
      },
      rules: {
        company: [
          { required: true, message: '请输入公司名称', trigger: 'blur' }
        ],
        'address.province': [
          { required: true, message: '请输入省份', trigger: 'blur' }
        ],
        'address.city': [
          { required: true, message: '请输入城市', trigger: 'blur' }
        ],
        'address.street': [
          { required: true, message: '请输入街道', trigger: 'blur' }
        ]
      }
    }
  },
  methods: {
    submitForm() {
      this.$refs.form.validate((valid) => {
        if (valid) {
          alert('验证通过')
        } else {
          alert('表单校验失败')
          return false
        }
      })
    }
  }
}

在这个多级嵌套示例中,验证数据结构包括companyaddress.provinceaddress.cityaddress.street四个属性,也就是深层次的嵌套验证。而验证规则也相应地进行了设置。在调用表单校验方法时,进行表单的验证并给出消息提示。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue element el-form 多级嵌套验证的实现示例 - Python技术站

(0)
上一篇 2023年6月10日
下一篇 2023年6月10日

相关文章

  • jQuery实现用户注册的表单验证示例

    关于“jQuery实现用户注册的表单验证示例”的完整攻略,我可以为您提供以下几点详细说明: 1. 理解表单验证的原理 在前端开发中,表单验证是非常常见的功能,其主要作用是确保用户输入的数据符合规范,避免因用户输入错误导致的问题。表单验证的原理通常是通过JavaScript代码获取到用户输入的值,对其进行校验,并根据判断结果显示相应的提示信息。其中,jQuer…

    JavaScript 2023年6月10日
    00
  • JS判断字符串变量是否含有某个字串的实现方法

    JS判断字符串变量是否含有某个字串的实现方法可以使用JS字符串对象提供的indexOf()方法。 indexOf()方法返回被查找字符串的起始位置,如果没有找到则返回-1。通过这个方法,可以判断某个字符串是否在原字符串中存在,从而实现判断字符串变量是否含有某个字串。 以下是具体的实现方法: 方法一:使用indexOf()方法 语法格式: string.ind…

    JavaScript 2023年5月28日
    00
  • JS获取浏览器语言动态加载JS文件示例代码

    我会详细讲解“JS获取浏览器语言动态加载JS文件示例代码”的完整攻略,并为你提供两个示例说明。 1. JS获取浏览器语言的方法 在JS中,可以通过navigator.language属性获取浏览器的默认语言。该属性返回一个字符串,代表浏览器当前使用的语言。例如,如果浏览器使用的是英文,那么该属性的值就是en-US。 获取浏览器语言的示例代码如下: var b…

    JavaScript 2023年5月27日
    00
  • 浅谈关于JavaScript的语言特性分析

    我来详细讲解 “浅谈关于JavaScript的语言特性分析” 的完整攻略。 步骤1:初步介绍 JavaScript 是一种弱类型的、动态的脚本语言,常用于编写网页的交互效果和动态功能。JavaScript 有其独特的语言特性,包括但不限于以下几点: 弱类型:JavaScript 变量的类型不需要在声明时指定,可以在运行时动态改变,在对类型不那么敏感的应用场景…

    JavaScript 2023年5月18日
    00
  • Javascript解析URL方法详解

    Javascript解析URL方法详解 当我们使用JavaScript编写Web应用程序时,需要对URL进行解析。在本攻略中,我们将详细介绍JavaScript中解析URL的方法。 URL的基本结构 一个URL(Uniform Resource Locator)通常由以下几个部分组成: 协议://主机名[:端口号]/路径?查询字符串#锚点 其中: 协议:如h…

    JavaScript 2023年6月11日
    00
  • JavaScript+html5 canvas制作的百花齐放效果完整实例

    下面我将为您详细讲解“JavaScript+html5 canvas制作的百花齐放效果完整实例”的完整攻略。 需求分析 首先我们需要明确需求,对于“JavaScript+html5 canvas制作的百花齐放效果完整实例”,我们需要实现什么样的效果呢? 具体而言,我们需要实现以下特点: 在canvas上绘制出多个不同颜色、不同形状的花朵 花朵应该随机飘落、旋…

    JavaScript 2023年6月10日
    00
  • Javascript Array valueOf 方法

    以下是关于JavaScript Array valueOf方法的完整攻略。 JavaScript Array valueOf方法 JavaScript Array valueOf方法用于返回数组本身。该方法返回的是数组对象本身,而不是数组中的元素。 下面是一个使用valueOf方法的示例: var arr = [1, 2, 3, 4, 5]; console…

    JavaScript 2023年5月11日
    00
  • 原生js实现文件上传、下载、封装等实例方法

    针对“原生js实现文件上传、下载、封装等实例方法”的完整攻略,我将从以下几个方面进行讲解: 文件上传 文件下载 封装实例方法 文件上传 HTML 首先,在HTML中,需要创建一个文件上传的表单,其中包含一个input标签,类型为file: <form enctype="multipart/form-data" method=&quo…

    JavaScript 2023年5月27日
    00
合作推广
合作推广
分享本页
返回顶部