详谈vue中的rules表单验证(常用)

yizhihongxing

详谈vue中的rules表单验证(常用)

Vue中的表单验证是常见的一种交互操作,可以帮助我们检验用户输入的数据是否符合要求,并且在数据有误的情况下,给出相应的提示。

Vue中表单验证的实现方式主要有两种:手写验证函数和使用第三方表单验证库。

在Vue中,常见的表单验证方法是通过在form表单中添加rules属性来实现的,下面我们来看看这个方法到底是怎么实现的。

form表单引入验证规则

在Vue中,我们使用Vue.use()方法来安装第三方插件,Vue并没有提供内置的表单验证插件,但是我们可以通过引入vee-validate插件来实现表单验证,同时我们也可以使用自己写的验证规则,只需要在data数据中定义rules属性。

在data数据中,我们定义一个rules属性,它是一个对象数组,每个数组项都是一个对象,对应一个表单项,对象里面包含了对这个表单项的验证规则。

data() {
    return {
        form: {},
        rules: {
            name: [
                { required: true, message: '请输入用户名', trigger: 'blur' },
                { min: 2, max: 10, message: '长度在 2 到 10 个字符', trigger: 'blur' }
            ],
            password: [
                { required: true, message: '请输入密码', trigger: 'blur' },
                { min: 6, max: 16, message: '长度在 6 到 16 个字符', trigger: 'blur' }
            ]
        }
    }
}

以上定义了两个表单项的验证规则,namepassword分别定义了两个验证规则,包括必填、长度限制和失焦事件触发。
其中required表示必填,blur表示输入框失焦事件触发,其他的可以根据固定格式设置。

form表单绑定验证规则

对于一个表单,我们可以通过v-model指令来绑定表单的数据来源,通过v-on指令来绑定表单的事件。在Vue中,我们使用v-bind指令来绑定规则对象。需要注意的是,规则对象必须和表单对应的数据属性同名,用于进行数据校验。

<el-form :model="form" :rules="rules">
    <el-form-item label="用户名" prop="name">
        <el-input v-model="form.name" autocomplete="off" placeholder="请输入用户名"></el-input>
    </el-form-item>
    <el-form-item label="密码" prop="password">
        <el-input type="password" v-model="form.password" autocomplete="off" placeholder="请输入密码"></el-input>
    </el-form-item>
    <el-form-item>
        <el-button type="primary" @click="handleSubmit">提交</el-button>
    </el-form-item>
</el-form>

上面的代码中,我们使用了Element-UI的表单组件,通过prop属性来绑定规则对象的名称,即name和password。可以看到,我们在定义表单规则时,规则对象的属性名必须和字段prop值相同,验证器才会在输入事件中对该字段进行验证。

表单验证原理简述

在Vue中,当一个表单项失焦或者提交时,会触发验证事件,然后执行定义在rules中的验证规则方法,校验通过时会显示验证成功的信息,否则会显示错误提示信息。

在vue中,已经实现了对prop 设置了prop属性的表单元素,自动进行了校验的功能,只要messgae函数中书写验证提示信息,即可在表单元素下方显示提示信息。

表单验证的两个示例

示例1:年龄验证

需求:检查输入的年龄是否在18~60之间。

<template>
  <div>
    <el-form ref='form' :model='form' :rules='rules' label-width='120px'>
      <el-form-item label='年龄' prop='age'>
        <el-input v-model='form.age' class='input-with-select' placeholder='请输入年龄'></el-input>
      </el-form-item>
      <el-button type='primary' @click='submit'>提交</el-button>
    </el-form>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        form: {
          age: ''
        },
        rules: {
          age: [
            { required: true, message: '年龄不能为空', trigger: 'blur' },
            { type: 'number', message: '年龄必须为数字值', trigger: 'blur' },
            { min: 18, max: 60, message: '年龄必须在18~60岁之间', trigger: 'blur' }
          ]
        }
      }
    },
    methods: {
      submit() {
        this.$refs.form.validate((valid) => {
          if (valid) {
            this.$message({
              type: 'success',
              message: '验证成功!'
            });
          } else {
            this.$message({
              type: 'error',
              message: '验证失败,请检查输入!'
            });
            return false;
          }
        });
      }
    }
  }
</script>

<style>
  .input-with-select {
    width: 200px;
  }
</style>

示例2:手机号验证

需求:检查输入的手机号是否符合规范。

<template>
  <div>
    <el-form>
      <el-form-item label='手机号' prop='phone'>
        <el-input v-model='form.phone' class='input-with-select' placeholder='请输入手机号'></el-input>
      </el-form-item>
      <el-button type='primary' @click='submit'>提交</el-button>
    </el-form>
  </div>
</template>

<script>
  export default {
    data() {
      return {
        form: {
          phone: ''
        }
      }
    },
    computed: {
      isPhone() {
        const reg = /^1[3|4|5|7|8][0-9]\d{8}$/;
        return reg.test(this.form.phone);
      }
    },
    methods: {
      submit() {
        if (this.isPhone) {
          this.$message({
            type: 'success',
            message: '手机号格式正确!'
          });
        } else {
          this.$message({
            type: 'error',
            message: '手机号格式错误,请重新输入!'
          });
        }
      }
    }
  }
</script>

<style>
  .input-with-select {
    width: 200px;
  }
</style>

以上两个示例分别使用了Element-UI的表单组件和自定义验证规则实现了对年龄和手机号的验证。在实际使用过程中,我们可以根据需要修改rules对象中的验证规则来实现不同的验证需求。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:详谈vue中的rules表单验证(常用) - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue对象复制方式(深拷贝,多层对象拷贝方式在后面)

    Vue.js是一个非常流行的JavaScript框架,它提供了一种响应式的数据绑定机制,使开发人员可以方便地管理和修改UI状态。在Vue.js开发中,我们经常需要对Vue对象进行复制操作,这里提供了深拷贝和多层对象拷贝两种方式。 深拷贝方式 深拷贝是指将一个对象及其所有属性和属性值复制到一个新的对象中,这个新的对象与原始对象没有任何关联。在JavaScrip…

    Vue 2023年5月28日
    00
  • Vue 读取HTMLCollection列表的length为0问题

    问题描述: 当使用Vue操作DOM元素时,可能会遇到读取HTMLCollection列表的长度为0的问题,即使实际上该列表中确实存在元素。这种情况通常发生在使用v-for指令进行迭代的时候,导致在渲染DOM元素时出现错误。 问题的根本原因是Vue在渲染DOM之前,会先进行一次异步更新操作,导致HTMLCollection列表还没被完全生成就被要求去读取它的长…

    Vue 2023年5月27日
    00
  • Vue + Webpack + Vue-loader学习教程之相关配置篇

    关于“Vue + Webpack + Vue-loader学习教程之相关配置篇”的完整攻略,我们需要从以下几个方面来讲解。 1. 安装Webpack 首先,在开始之前我们需要安装Webpack,可以在终端中输入以下命令进行安装: npm install –save-dev webpack 2. 安装Vue.js和Vue-loader 接下来,我们需要安装V…

    Vue 2023年5月28日
    00
  • Vue 2.0 基础详细

    Vue 2.0 基础详细攻略 Vue.js是一款流行的JavaScript框架,它可以使我们更容易地编写可重用的组件以及可交互的应用程序。Vue 2.0是Vue.js的最新版本,它具有更高的性能和更好的开发体验。在本文中,我们将介绍Vue.js 2.0的基础知识和相关概念,以及如何使用Vue.js 2.0构建现代Web应用程序。 Vue.js基础 Vue.j…

    Vue 2023年5月27日
    00
  • 详解vue axios用post提交的数据格式

    下面是详解vue axios用post提交的数据格式的完整攻略。 一、为什么要使用post方式提交数据 在前端应用中,常常需要向后台服务器提交数据。其中最常见的方式是使用GET和POST两种方式中的一种。GET方式将数据以键值对的形式放在URL的后面传递,而POST方式将数据放在请求体中传递。相比较而言,POST方式传输的数据更加隐蔽,更加安全。 二、如何用…

    Vue 2023年5月28日
    00
  • vue微信分享 vue实现当前页面分享其他页面

    针对”vue微信分享 vue实现当前页面分享其他页面”这一话题,我提供以下的完整攻略: 1. 微信分享的原理 微信分享的原理是通过wx.config和wx.ready两个JS-SDK函数的设置,将需要分享的内容传递给微信服务器,生成分享链接。生成的分享链接是根据当前页面的URL生成的,因此我们需要在不同页面上对应不同的分享信息进行设置。 2. 配置微信 JS…

    Vue 2023年5月27日
    00
  • element vue validate验证名称重复 输入框与后台重复验证 特殊字符 字符长度 及注意事项小结【实例代码】

    下面就针对题目中所涉及的内容进行详细介绍。 Element UI中的表单验证 Element UI提供了简单易用的表单验证功能。在Vue项目中使用Element UI时,可以通过对Element UI的form组件进行配置,来实现表单的验证功能。 验证名称重复 在表单验证过程中,可能会遇到需要验证某个字段的值是否与数据库中已有的值重复的情况。此时,可以通过自…

    Vue 2023年5月27日
    00
  • vue实现简单跑马灯效果

    接下来我将详细讲解如何使用Vue.js来实现简单跑马灯效果。 简介 跑马灯效果是一种常见的网页动效,指在页面上呈现一段文字或图片等内容循环滚动的效果。Vue.js是一款流行的JavaScript框架,提供了许多方便的工具和API,用于处理前端视图的更新和渲染。结合Vue.js的数据绑定和渲染功能,可以很容易地实现跑马灯的效果。 实现步骤 下面是实现跑马灯效果…

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