详谈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日

相关文章

  • 使用命令行工具npm新创建一个vue项目的方法

    创建Vue项目的步骤如下: 安装Node.js和npm 首先需要在电脑上安装Node.js和npm(Node.js包管理工具)。Node.js是运行于服务器端的JavaScript解释器,而npm是随同Node.js一起安装的包管理器,用于管理Node.js模块和软件包。 使用命令行工具创建一个文件夹,用于存储Vue项目文件 在命令行工具(如Git Bash…

    Vue 2023年5月28日
    00
  • 解决Vue watch里调用方法的坑

    当我们在 Vue 组件里使用 watch 来监听某一个数据的变化时,有时候我们需要在回调函数里执行一些复杂的操作,例如:调用一个方法去计算某个值,或者调用一个 API 获取一些数据。但是,有时候我们会遇到这样的问题:在 watch 回调函数里调用方法时,方法里的 this 变量不指向组件实例。 这个问题的原因是由于 JavaScript 中的 this 变量…

    Vue 2023年5月27日
    00
  • .html页面引入vue并使用公共组件方式

    介绍:本文主要讲解如何在.html页面中引入vue并使用公共组件,方便不熟悉Vue.js框架但需要使用公共组件的人员进行开发。 步骤: 引入Vue.js及Vue组件库 在.html文件中使用<script>标签引入Vue.js及所需的Vue组件库。如下: “`html “` 注册Vue组件 在引入Vue组件库后,我们需要先在页面中注册需要使用…

    Vue 2023年5月28日
    00
  • Vue js 的生命周期(看了就懂)(推荐)

    Vue.js的生命周期 Vue.js 的生命周期是指从 Vue 实例创建、运行到销毁的整个过程,主要包括以下几个阶段: 创建阶段(Initialization): beforeCreate:实例刚在内存中创建出来,但还未初始化 data、methods、computed、watcher 等属性和对象,因此无法访问 data、methods、computed、…

    Vue 2023年5月29日
    00
  • 详解Vue 的异常处理机制

    详解Vue 的异常处理机制 在Vue中,异常处理是非常重要的一项功能。当Vue应用程序遇到错误时,异常处理机制能够以可控的方式展示错误信息,帮助开发过程中更加高效、准确的定位和解决问题。本文将详解Vue的异常处理机制,以及如何在Vue应用程序中实现异常处理。 Vue 的异常处理机制 Vue中的异常处理机制主要由以下两部分组成: 1.全局错误处理器(Globa…

    Vue 2023年5月27日
    00
  • vue中渲染对象中属性时显示未定义的解决

    当在Vue中渲染对象中的属性时,有时会遇到属性未定义的情况,会导致渲染问题。以下是在Vue中解决该问题的攻略: 步骤1:使用v-if条件语句 如果在Vue的组件中使用对象的属性,可以通过使用v-if条件语句来判断该属性是否存在,从而避免了在渲染时引用未定义的属性。 <div v-if="obj && obj.property&…

    Vue 2023年5月28日
    00
  • Vue.sync修饰符与$emit(update:xxx)详解

    让我来给你详细讲解一下Vue.sync修饰符与$emit(update:xxx)的使用方法。 Vue.sync修饰符 Vue.sync修饰符是Vue.js 2.3.0版本中添加的一个修饰符,它主要用于简化父子组件之间的双向数据绑定。在Vue 2.3.0版本中,你可以使用Vue.sync修饰符来实现子组件对父组件数据的更新。 <template> …

    Vue 2023年5月28日
    00
  • next.js初始化参数设置getServerSideProps应用学习

    下面我将为您详细讲解Next.js的初始化参数设置和getServerSideProps的应用学习的完整攻略。 Next.js 初始化参数设置 Next.js 是一个 React 框架,可以用于实现服务器渲染的 React 应用。初始化 Next.js 项目时,可以进行一些参数设置,以满足我们的应用程序需求。 一、创建项目 首先,您需要先在您的电脑中安装 N…

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