vue+element实现表单校验功能

yizhihongxing

下面是“vue+element实现表单校验功能”的完整攻略。

一、需求

在前端开发中,表单校验是一项常见的需求。我们需要实现以下功能:

  1. 用户填写表单时,对表单数据进行即时校验,及时提示用户。
  2. 当用户提交表单数据时,对数据再次校验,确保数据填写正确后才提交。

为了实现上述两个功能,我们可以选择使用Vue框架和Element组件库提供的表单组件及表单校验功能。下面我们来一步一步实现。

二、搭建基础环境

首先,我们需要确保我们安装了Vue框架及Element组件库。如果没有安装,可以使用以下命令行进行安装:

# 安装Vue框架
npm install vue

# 安装Element组件库
npm install element-ui

三、创建基础表单,并进行基础校验

接下来,我们开始创建表单。这里将以登录表单为例,创建一个简单的登录表单。

<template>
  <el-form ref="loginForm" :model="loginForm" :rules="loginFormRules" label-width="80px">
    <el-form-item label="用户名" prop="username">
      <el-input v-model="loginForm.username"></el-input>
    </el-form-item>
    <el-form-item label="密码" prop="password">
      <el-input type="password" v-model="loginForm.password"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="submitForm">登录</el-button>
    </el-form-item>
  </el-form>
</template>

<script>
  export default {
    data() {
      return {
        loginForm: {
          username: '',
          password: ''
        },
        loginFormRules: {
          username: [
            { required: true, message: '请输入用户名', trigger: 'blur' }
          ],
          password: [
            { required: true, message: '请输入密码', trigger: 'blur' },
            { min: 6, max: 20, message: '密码长度在6到20个字符之间', trigger: 'blur' }
          ]
        }
      };
    },
    methods: {
      submitForm() {
        this.$refs.loginForm.validate(valid => {
          if (valid) {
            alert('校验通过');
          } else {
            alert('表单校验失败');
            return false;
          }
        });
      }
    }
  };
</script>

上述代码创建了一个登录表单,包含用户名、密码两个输入框,以及一个登录按钮。我们使用ref属性将表单组件绑定到实例上,同时使用:model:rules属性将表单数据和表单校验规则绑定到表单组件上。

现在我们可以在浏览器中看到一个基础的表单,我们可以输入用户名和密码,并点击登录按钮进行校验。但这个表单只实现了最基础的校验功能,仅在输入框失去焦点时进行校验,而没有及时提示用户错误信息。下面我们继续完善表单校验功能。

四、实现即时校验

我们的需求中要求对输入框进行即时校验,因此我们需要在用户输入时对表单数据进行校验并及时提示用户错误信息。这里我们使用Vue提供的计算属性实现该功能。代码如下:

<template>
  <el-form ref="loginForm" :model="loginForm" :rules="loginFormRules" label-width="80px">
    <el-form-item label="用户名" prop="username" :error="loginFormErrors.username">
      <el-input v-model="loginForm.username" @input="validateInput('username')"></el-input>
      <div v-if="loginFormErrors.username" style="color: red">{{ loginFormErrors.username }}</div>
    </el-form-item>
    <el-form-item label="密码" prop="password" :error="loginFormErrors.password">
      <el-input type="password" v-model="loginForm.password" @input="validateInput('password')"></el-input>
      <div v-if="loginFormErrors.password" style="color: red">{{ loginFormErrors.password }}</div>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="submitForm">登录</el-button>
    </el-form-item>
  </el-form>
</template>

<script>
  export default {
    data() {
      return {
        loginForm: {
          username: '',
          password: ''
        },
        loginFormRules: {
          username: [
            { required: true, message: '请输入用户名', trigger: 'blur' }
          ],
          password: [
            { required: true, message: '请输入密码', trigger: 'blur' },
            { min: 6, max: 20, message: '密码长度在6到20个字符之间', trigger: 'blur' }
          ]
        },
        loginFormErrors: {}
      };
    },
    methods: {
      submitForm() {
        this.$refs.loginForm.validate(valid => {
          if (valid) {
            alert('校验通过');
          } else {
            alert('表单校验失败');
            return false;
          }
        });
      },
      validateInput(key) {
        this.$refs.loginForm.validateField(key, () => {
          this.loginFormErrors[key] = '';
        });
      }
    }
  };
</script>

我们新增了一个计算属性loginFormErrors,用于保存每个输入框相应的错误信息。我们在输入框上绑定了@input事件,在用户输入时调用validateInput()方法,以便在用户输入时进行实时校验。validateInput()方法使用validateField()方法对该输入框的数据进行校验,并将错误信息保存到loginFormErrors中,以便前端及时在页面上显示错误信息。

五、自定义校验规则

在前面的示例中,我们使用了Element组件库提供的校验规则。但是有时候我们可能需要自定义一些校验规则。那么,我们该如何自定义校验规则呢?其实很简单,只需在loginFormRules中添加一条相应的规则即可。以下是一个示例:

<template>
  <el-form ref="loginForm" :model="loginForm" :rules="loginFormRules" label-width="80px">
    <el-form-item label="手机号" prop="mobile">
      <el-input v-model="loginForm.mobile"></el-input>
    </el-form-item>
    <el-form-item>
      <el-button type="primary" @click="submitForm">登录</el-button>
    </el-form-item>
  </el-form>
</template>

<script>
  export default {
    data() {
      return {
        loginForm: {
          mobile: ''
        },
        loginFormRules: {
          mobile: [
            { required: true, message: '请输入手机号', trigger: 'blur' },
            {
              validator: (rule, value, callback) => {
                if (!(/^1[3456789]\d{9}$/.test(value))) {
                  callback(new Error('请输入正确的手机号'));
                } else {
                  callback();
                }
              },
              trigger: 'blur'
            }
          ]
        }
      };
    },
    methods: {
      submitForm() {
        this.$refs.loginForm.validate(valid => {
          if (valid) {
            alert('校验通过');
          } else {
            alert('表单校验失败');
            return false;
          }
        });
      }
    }
  };
</script>

在以上示例中,我们添加了一个自定义手机号校验规则,并将该规则添加到loginFormRules中。在该规则中,我们使用了正则表达式进行手机号的判断,如果不符合规定,则调用callback()方法并返回错误信息。

六、总结

以上就是“vue+element实现表单校验功能”的完整攻略。我们在具体实现过程中,先是创建了基础表单,并进行了基础校验;然后,我们使用Vue提供的计算属性实现了表单的即时校验;最后,我们通过示例,向大家详细介绍了自定义校验规则的方法。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue+element实现表单校验功能 - Python技术站

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

相关文章

  • JavaScript Ajax请求

    JavaScript Ajax请求的完整攻略: 1. 创建XMLHttpRequest对象(XHR) 创建XHR对象是Ajax请求的第一步。XHR是一个内置的JavaScript对象,允许在不刷新页面的情况下向服务器发送请求。 var xhr = new XMLHttpRequest(); 2. 准备请求 在发起请求之前,需要设置请求的各个参数,如请求类型、…

    Web开发基础 2023年3月30日
    00
  • JavaScript函数IIFE使用详解

    JavaScript函数IIFE使用详解 IIFE(Immediately Invoked Function Expression)是一种用于创建局部作用域的函数,也被称为自执行函数。它是一种简单的编程技巧,使用它能够有效地防止全局变量被污染,同时也能方便地访问全局变量。 IIFE的基本语法 IIFE 的基本语法如下: (function() { // co…

    JavaScript 2023年5月27日
    00
  • JavaScript常用基础知识强化学习

    JavaScript常用基础知识强化学习攻略 1. 前置知识 在进行JavaScript常用基础知识的强化学习之前,需要掌握以下前置知识: HTML和CSS基础知识 程序基本结构(语句、循环、条件判断等) 数据类型、变量、运算符 函数、对象、数组 2. 基础知识强化学习方法 2.1 阅读MDN文档 MDN提供了JavaScript的完整文档,包含了语言核心、…

    JavaScript 2023年6月10日
    00
  • 前端面试必备之html5的新特性

    前言 HTML5是目前Web前端开发中最重要的技术之一,保持对HTML5新特性的熟练掌握将有助于大大提升前端开发工作的效率。本文将详细讲解HTML5的新特性,为前端面试者提供必备攻略。 常见的HTML5新特性 1. 语义化标签 HTML5增加了许多语义化元素,使页面结构更加清晰有序,利于搜索引擎和开发者理解和维护。例如: <header>头部内容…

    JavaScript 2023年5月28日
    00
  • 详解JavaScript之Array.reduce源码解读

    详解JavaScript之Array.reduce源码解读 简介 Array.reduce() 是 Javascript 中一个十分有用的函数,它可以将数组转化为单个值。它的使用方式是这样的 array.reduce(callback[, initialValue]) ,其中 callback 是回调函数,initialValue是初始值。在本文中,我们将通…

    JavaScript 2023年5月27日
    00
  • 徒手实现关于JavaScript的24+数组方法

    徒手实现关于JavaScript的24+数组方法 在这篇攻略中,我们将徒手实现JavaScript中24个及以上的数组方法。这些方法包括常用的push,pop,shift和unshift等,以及其他数组方法如map,filter,reduce,every,some等。我们将会学到如何使用JavaScript编写这些方法,这将展示数组方法是如何工作的。 方法1…

    JavaScript 2023年5月27日
    00
  • 原生js实现trigger方法示例代码

    下面是详细讲解原生JS实现trigger方法的完整攻略。 什么是trigger方法? 在jQuery中,trigger方法是一个非常常用的方法,它的功能是触发指定事件。例如,我们可以通过trigger方法来实现模拟点击元素、触发表单提交、自定义事件等。 在原生JavaScript中并没有trigger方法,因此我们需要自己手动实现。 实现trigger方法 …

    JavaScript 2023年6月10日
    00
  • (推荐一个超好的JS函数库)S.Sams Lifexperience ScriptClassLib

    S.Sams Lifexperience ScriptClassLib(以下简称 SLSC)是一个非常好的 JavaScript 函数库,它包含了许多常用的函数和类,可以帮助开发者快速创建高效且易于维护的JavaScript应用程序。 安装 你可以在官方网站 https://www.sams.com/slscl 上下载 SLSC 的最新版本,也可以使用 np…

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