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

详谈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项目使用websocket连接问题及解决

    下面详细讲解Vue项目使用WebSocket连接问题及解决的完整攻略。 一、问题描述 在Vue项目中,使用WebSocket连接时可能会遇到一些问题,例如无法连接或连接中断等,影响了数据的传输和实时更新。当我们遇到这些问题时,需要深入分析原因并解决问题,以保证项目的正常运行。下面是一些可能出现的问题: 连接WebSocket遇到跨域问题。 WebSocket…

    Vue 2023年5月28日
    00
  • vuecli项目构建SSR服务端渲染的实现

    下面是关于“vuecli项目构建SSR服务端渲染的实现”的完整攻略: 1. 什么是SSR? SSR全称Server Side Rendering(服务端渲染),意思是将页面在服务器端进行渲染,然后再将已渲染的页面传输给客户端展示出来。 SSR的好处: 更快的页面渲染速度,减少白屏时间 更好的SEO(搜索引擎优化) 更好的用户体验 2. Vue CLI 3 如…

    Vue 2023年5月28日
    00
  • Vue组件中使用防抖和节流实例分析

    下面是关于”Vue组件中使用防抖和节流实例分析”的攻略: 什么是防抖和节流 在介绍如何在Vue组件中使用防抖和节流之前,我们先来了解一下什么是防抖和节流。 防抖 防抖,顾名思义,就是防止抖动。在前端开发中,防抖指的是在一段时间内连续触发某个事件时,只执行一次处理函数。也就是说,当事件触发后,只有在指定的间隔时间内没有再次触发事件,才会执行函数。 节流 节流是…

    Vue 2023年5月28日
    00
  • Vue多组件仓库开发与发布详解

    我来为您详细讲解“Vue多组件仓库开发与发布详解”的完整攻略。 概述 Vue 多组件仓库开发与发布,意味着我们可以在一个仓库内管理多个 Vue 组件,然后将这些组件发布到 package registry,以便其他人可以通过 npm 安装和使用这些组件。 Vue 组件的开发、测试、打包和发布都需要在仓库内完成,本文将以一个具体的实例进行说明。 前置知识 在进…

    Vue 2023年5月28日
    00
  • 详解Vue.js Mixins 混入使用

    当我们在Vue.js开发中遇到一些需求/问题时,一般会去找相关的解决方式,但是如果每个组件都自己实现一遍,那这种方式太浪费时间了。Vue.js的混合(Mixins)可以很好的解决这个问题,它能将我们的特定代码逻辑抽取成可复用的模块,可以应用于任何组件中。 基础使用 混合可以定义一些公共的数据,方法,计算属性等使用于多个组件。在Vue.js中通过mixins属…

    Vue 2023年5月27日
    00
  • vue实现的微信机器人聊天功能案例【附源码下载】

    来讲解一下“vue实现的微信机器人聊天功能案例【附源码下载】”的完整攻略吧。 一、背景 微信机器人是近几年比较热门的技术之一,很多人会用机器人来完成一些简单的自动回答问题的功能。而使用Vue实现微信机器人聊天功能可以为我们提供一个更加简单、便利、美观的方式,同时也可以让我们更加深入的了解Vue框架的使用。 二、准备工作 为了实现该功能,我们需要做以下准备工作…

    Vue 2023年5月27日
    00
  • Vue + better-scroll 实现移动端字母索引导航功能

    让我为你详细讲解“Vue + better-scroll 实现移动端字母索引导航功能”的完整攻略。 简介 better-scroll 是一款移动端的滚动库,可以使包裹内容的容器进行滚动并提供丰富的滚动特效。同时,Vue 是一款非常流行的前端框架,能够方便地将应用程序的数据和用户界面组件化,以及提供方便的指令和组件功能。在本攻略中,将 Vue 和 better…

    Vue 2023年5月27日
    00
  • vuex状态持久化在vue和nuxt.js中的区别说明

    接下来我会详细讲解有关“vuex状态持久化在vue和nuxt.js中的区别说明”的攻略。 1. 什么是vuex状态持久化 Vuex是一个专为Vue.js应用程序开发的状态管理模式。它采用集中式存储管理应用的所有组件的状态,例如用户信息、用户账户等。在Vuex中,状态state、mutation(操作状态的函数)和action(异步操作state的函数)被定义…

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