vue实现表单验证功能

作者:Eva_伊娃 时间:2024-06-05 10:03:59 

本篇主要讲述如何基于NUXT的validate方法实现表单的验证。

将验证方法封装后,使用的时候只需像:rules="filter_rules({required:true,type:'mobile'})"这么一行代码便可在页面中实现验证了。

首先看一下实现效果

vue实现表单验证功能

一、新建一个validate.js文件:

该文档中放所需的一些验证规则,下面直接看代码:


/**
* Created by jiachenpan on 16/11/18.
**/

export function isvalidUsername (str) {
 const valid_map = ['admin', 'editor']
return valid_map.indexOf(str.trim()) >= 0

}

// 非负数
export function noFuNumber (str) {
 const reg = /^\d+(\.{0,1}\d+){0,0}$/
return reg.test(str)

}

// 手机号
export function isvalidMobile (str) {
 const reg = /^1(3|4|5|7|8)\d{9}$/
return reg.test(str)

}

// 中文、英文、数字
export function regexn (str) {
 const reg = /^[\u4e00-\u9fa5_a-zA-Z0-9]+$/
return reg.test(str)

}

/* 合法uri */
export function validateURL (textval) {
const urlregex = /^(https?|ftp):\/\/([a-zA-Z0-9.-]+(:[a-zA-Z0-9.&%$-]+)*@)*((25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9][0-9]?)(\.(25[0-5]|2[0-4][0-9]|1[0-9]{2}|[1-9]?[0-9])){3}|([a-zA-Z0-9-]+\.)*[a-zA-Z0-9-]+\.(com|edu|gov|int|mil|net|org|biz|arpa|info|name|pro|aero|coop|museum|[a-zA-Z]{2}))(:[0-9]+)*(\/($|[a-zA-Z0-9.,?'\\+&%$#=~_-]+))*$/
return urlregex.test(textval)

}

/* 小写字母 */
export function validateLowerCase (str) {
 const reg = /^[a-z]+$/
return reg.test(str)

}

/* 大写字母 */
export function validateUpperCase (str) {
  const reg = /^[A-Z]+$/
return reg.test(str)

}

/* 大小写字母 */
export function validateAlphabets (str) {
 const reg = /^[A-Za-z]+$/
return reg.test(str)

}

/**
* validate email
* @param email
* @returns {boolean}
*/

二、新建filter_rules.js文件:

该文档放验证的回调函数和验证字段。

附代码:


import { isvalidMobile, regexn, noFuNumber } from '@/utils/validate'
export default {
install (Vue) {

/**
* 注意: 定义type 规则时 不用做非空验证
* 只需要传入 required:true 即可
* */

/* 验证非负数 */

const isnoFuNumber = (rule, value, callback) => {
if (value != null && value !== '') {
if (!noFuNumber(value)) {
 callback(new Error('请输入非负数的数字!'))
} else {

callback()

}

} else {
callback()

}

}

/* 验证手机号 */
const isvalidateMobile = (rule, value, callback) => {
if (value != null && value !== '') {
if (!isvalidMobile(value)) {
callback(new Error('请输入正确的手机号码!'))

} else {
callback()
}

} else {
callback()

}

}

/* 含有非法字符(只能输入中文、英文、数字) */
const isvalidateRegexn = (rule, value, callback) => {
if (value != null && value !== '') {
if (!regexn(value)) {
callback(new Error('含有非法字符(只能输入中文、英文、数字)!'))

} else {

callback()
}

} else {
callback()

}

}

/* 请输入正整数 */

// const isvalidateInteger= (rule, value, callback) => {
// if (value != null && value != "") {
// if (!integer(value)) {
// callback(new Error('请输入正整数!'))
// } else {
// callback()
// }
// }
// else {

// callback();
// }
// }

/**
* 参数 item
* required true 必填项
* maxLength 字符串的最大长度
* min 和 max 必须同时给 min < max type=number
* type 手机号 mobile
* 邮箱 email
* 网址 url
* 各种自定义类型 定义在 src/utils/validate 中 持续添加中.......
* */

Vue.prototype.filter_rules = function (item) {
let rules = []
if (item.required) {
rules.push({ required: true, message: '该输入项为必填项!', trigger: 'blur' })

}

if (item.maxLength) {
rules.push({ min: 1, max: item.maxLength, message: '最多输入' + item.maxLength + '个字符!', trigger: 'blur' })

}

if (item.min && item.max) {
rules.push({ min: item.min, max: item.max, message: '字符长度在' + item.min + '至' + item.max + '之间!', trigger: 'blur' })

}

if (item.type) {
let type = item.type
switch (type) {

// case 'email':
// rules.push({ type: 'email', message: '请输入正确的邮箱地址', trigger: 'blur,change' })
// break isnoFuNumber

case 'activeOrder':
rules.push({ validator: isnoFuNumber, trigger: 'blur' })
break

case 'mobile':
rules.push({ validator: isvalidateMobile, trigger: 'blur' })
break

case 'name':
rules.push({ validator: isvalidateRegexn, message: '请输入正确的用户姓名', trigger: 'blur' })
break

case 'password':
rules.push({ validator: isvalidateRegexn, message: '请输入密码', trigger: 'blur' })
break

case 'org_name':
rules.push({ validator: isvalidateRegexn, message: '机构名称不能包含特殊字符', trigger: 'blur' })
break

default:

rules.push({})

break

}

}

return rules

}

}

}

三、在页面中引入:


import Validate from '@/utils/filter_rules'

四、在页面中使用验证:

需将验证规则写在el-form-item标签内。

vue实现表单验证功能

需要注意的是:

vue实现表单验证功能

这三个地方的名称要书写一致。

来源:https://blog.csdn.net/u014445517/article/details/96475744

标签:vue,表单验证
0
投稿

猜你喜欢

  • Python如何实现大型数组运算(使用NumPy)

    2023-05-11 21:49:05
  • scrapy头部修改的方法详解

    2023-09-13 05:58:10
  • python密码学Base64编码和解码教程

    2022-12-10 13:13:47
  • win10下tensorflow和matplotlib安装教程

    2023-03-23 21:47:27
  • iframe全跨域高度自适应解决方案

    2008-12-21 16:16:00
  • python执行等待程序直到第二天零点的方法

    2023-08-27 11:49:21
  • 如何在scrapy中捕获并处理各种异常

    2023-04-10 06:56:23
  • MySQL中对于NULL值的理解和使用教程

    2024-01-27 22:51:02
  • 浅谈Python flask框架

    2021-04-07 00:45:43
  • Python+drawpad实现CPU监控小程序

    2022-05-30 19:54:38
  • sqlserver中如何查询出连续日期记录的代码

    2011-09-30 11:16:56
  • Oracle删除字段中的空格、回车及指定字符的实例代码

    2024-01-18 18:10:07
  • pytorch索引查找 index_select的例子

    2023-09-12 20:45:05
  • Python中json模块load/loads方法实战以及参数详解

    2022-01-28 14:14:30
  • PHP 获取远程网页内容的代码(fopen,curl已测)

    2024-05-05 09:17:59
  • javascript读取Json数据并分页显示,支持键盘和滚轮翻页

    2010-01-06 13:03:00
  • 了解不常见但是实用的Python技巧

    2022-10-12 09:07:35
  • mysql查询字段类型为json时的两种查询方式

    2024-01-27 19:05:48
  • python中的路径拼接问题

    2021-02-06 11:28:56
  • Spring Boot整合 NoSQL 数据库 Redis详解

    2024-01-29 18:16:36
  • asp之家 网络编程 m.aspxhome.com