vue+element实现表单校验功能

下面是“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实现时间日期的格式化的方法汇总

    标题 Javascript实现时间日期的格式化的方法汇总 介绍在Javascript中,实现时间日期格式化可以通过Date对象的方法和第三方库moment.js等方式来实现。本文汇总了几种常见的实现方式,并提供相关的示例说明。 方法1:使用Date对象的方法 在Javascript中,可以使用Date对象的方法对时间日期进行格式化。下面是一个例子,展示如何使…

    JavaScript 2023年5月27日
    00
  • 两个JavaScript jsFiddle JSBin在线调试器

    两个在线调试器jsFiddle和JS Bin都是非常受欢迎的前端开发工具,它们可以帮助开发者更快地验证JavaScript代码,并与其他开发者共享代码示例。接下来,我将详细讲解这两个工具的使用方法,包括如何创建代码示例、调试代码以及与其他用户共享示例。 JSFiddle 什么是JSFiddle? JSFiddle是一个在线代码编辑器和调试器,可以在其中编写并…

    JavaScript 2023年5月28日
    00
  • iframe子页面与父页面在同域或不同域下的js通信

    对于iframe子页面与父页面通信,需要注意同域或不同域等情况。 同域下的js通信 当子页面和父页面在同一个域名下时,js通信可以通过window.parent对象来进行。以下是一个简单的示例。 父页面代码: <!DOCTYPE html> <html> <head> <title>父页面</title&…

    JavaScript 2023年6月11日
    00
  • JavaScript Date对象功能与用法学习记录

    JavaScript Date对象功能与用法学习记录 什么是JavaScript Date对象? 在JavaScript中,Date对象用来表示日期和时间。它允许你通过数值表示时间,从而可以进行日期和时间的运算,比如加减、比较等操作。 一个Date对象包含了以下几个属性: 年份 (取值范围为4位数字形式,例如:2021) 月份 (0表示一月,11表示十二月)…

    JavaScript 2023年6月10日
    00
  • xml转json的js代码

    XML转JSON是开发过程中常见的问题,有时候需要将后端返回的XML数据转换为前端需要的JSON格式。以下是XML转JSON的JS代码的详细攻略: 一、XML转JSON的原理 XML和JSON是两种不同的数据格式,因此需要编写代码将XML转换为JSON格式。XML数据以标签为基础,有嵌套的结构关系,而JSON数据则以键值对为基础,没有嵌套的结构关系。因此,将…

    JavaScript 2023年5月27日
    00
  • AJAX简单测试代码实例

    下面我详细讲解一下“AJAX简单测试代码实例”的完整攻略。 AJAX简单测试代码实例 AJAX概述 AJAX(Asynchronous JavaScript And XML)即异步的JavaScript与XML技术。它允许web页面异步地更新部分内容,从而避免了页面全部刷新,提升了用户体验。 AJAX原理 AJAX是通过XMLHttpRequest对象实现的…

    JavaScript 2023年6月11日
    00
  • JavaScript实现使用Canvas绘制图形的基本教程

    JavaScript实现使用Canvas绘制图形是前端开发中的重要技能之一。下面是使用Canvas绘制图形的基本教程。 1. 了解Canvas Canvas是HTML5中提供的一个可以在网页中使用JavaScript绘制图形的元素,它可以用来绘制各种图形,如直线、矩形、圆形、多边形以及文本等。 2. HTML中创建Canvas元素 在HTML中,可以使用&l…

    JavaScript 2023年5月28日
    00
  • ElementUI中el-tree节点的操作的实现

    下面我会详细讲解在ElementUI中操作el-tree节点的实现攻略。 首先,请确保你已经正确引入ElementUI,以及el-tree组件。在此基础上,我们进入操作el-tree节点的实现过程。 一、添加节点 可以通过以下方法向el-tree中添加节点: <template> <el-tree :data="data&quot…

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