前言

vue 表单验证,具体的大家根据自身项目和框架来,本文以antd举例。

实现

  • 这里以antd 举例
<template><a-form-model ref="ruleForm" :model="form" :rules="rules" :label-col="labelCol" :wrapper-col="wrapperCol"><a-form-model-item ref="name" label="表单" prop="name"><a-input v-model="form.name"/></a-form-model-item><a-form-model-item :wrapper-col="{ span: 14, offset: 4 }"><a-button type="primary" @click="onSubmit">提交</a-button><a-button style="margin-left: 10px;" @click="resetForm">重置</a-button></a-form-model-item></a-form-model>
</template>
<script>
// 引入了外部的验证规则
import { validatePhone} from "@/utils/validate";export default {data() {return {labelCol: { span: 4 },wrapperCol: { span: 14 },other: '',form: {name: '',},rules: {name: [{ required: true, message: 'Please input Activity name', trigger: 'blur' },{ required: false, validator: validatePhone, trigger: 'blur' }],},};},methods: {onSubmit() {this.$refs.ruleForm.validate(valid => {if (valid) {alert('submit!');} else {console.log('error submit!!');return false;}});},resetForm() {this.$refs.ruleForm.resetFields();},},
};
</script>

validate 自定义规则

  • const:定义一个规则常量,常量名可变, ‘= (rule, value, callback) => {}’ 为固定格式,value 入参为验证的字段值

  • rules -> name:表单验证中使用 validator 指定自定义校验规则常量名称

/* 是否手机号码*/
export function validatePhone(rule, value,callback) {const reg =/^[1][3,4,5,7,8][0-9]{9}$/;if(value==''||value==undefined||value==null){callback();}else {if ((!reg.test(value)) && value != '') {callback(new Error('请输入正确的电话号码'));} else {callback();}}
}

以下为 validate.js

// 身份证格式
export function idCardValidity(rule, code, callback) {var city = { 11: "北京", 12: "天津", 13: "河北", 14: "山西", 15: "内蒙古", 21: "辽宁", 22: "吉林", 23: "黑龙江 ", 31: "上海", 32: "江苏", 33: "浙江", 34: "安徽", 35: "福建", 36: "江西", 37: "山东", 41: "河南", 42: "湖北 ", 43: "湖南", 44: "广东", 45: "广西", 46: "海南", 50: "重庆", 51: "四川", 52: "贵州", 53: "云南", 54: "西藏 ", 61: "陕西", 62: "甘肃", 63: "青海", 64: "宁夏", 65: "新疆", 71: "台湾", 81: "香港", 82: "澳门", 91: "国外 " };var tip = ""var pass = trueif (!code || !/^\d{6}(18|19|20)?\d{2}(0[1-9]|1[012])(0[1-9]|[12]\d|3[01])\d{3}(\d|X)$/i.test(code)) {tip = "身份证号格式错误"pass = false;} else if (!city[code.substr(0, 2)]) {tip = "地址编码错误"pass = false} else {// 18位身份证需要验证最后一位校验位if (code.length === 18) {code = code.split('')// ∑(ai×Wi)(mod 11)// 加权因子var factor = [7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2]// 校验位var parity = [1, 0, 'X', 9, 8, 7, 6, 5, 4, 3, 2]var sum = 0var ai = 0var wi = 0for (var i = 0; i < 17; i++) {ai = code[i]wi = factor[i]sum += ai * wi}var last = parity[sum % 11];if (parity[sum % 11] != code[17]) {tip = "校验位错误"pass = false}}}if (!pass) {callback(new Error(tip))} else {callback()}
}/* 是否合法IP地址 */
export function validateIP(rule, value,callback) {if(value==''||value==undefined||value==null){callback();}else {const reg = /^(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])\.(\d{1,2}|1\d\d|2[0-4]\d|25[0-5])$/;if ((!reg.test(value)) && value != '') {callback(new Error('请输入正确的IP地址'));} else {callback();}}
}/* 是否手机号码或者固话 */
export function validatePhoneTwo(rule, value, callback) {const reg = /^((0\d{2,3}-\d{7,8})|(1[34578]\d{9}))$/;;if (value == '' || value == undefined || value == null) {callback();} else {if ((!reg.test(value)) && value != '') {callback(new Error('请输入正确的电话号码或者固话号码'));} else {callback();}}
}/* 是否固话 */
export function validateTelphone(rule, value,callback) {const reg =/0\d{2}-\d{7,8}/;if(value==''||value==undefined||value==null){callback();}else {if ((!reg.test(value)) && value != '') {callback(new Error('请输入正确的固话(格式:区号+号码,如010-1234567)'));} else {callback();}}
}/* 是否手机号码*/
export function validatePhone(rule, value,callback) {const reg =/^[1][3,4,5,7,8][0-9]{9}$/;if(value==''||value==undefined||value==null){callback();}else {if ((!reg.test(value)) && value != '') {callback(new Error('请输入正确的电话号码'));} else {callback();}}
}/* 是否身份证号码 */
export function validateIdNo(rule, value,callback) {const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/;if(value==''||value==undefined||value==null){callback();}else {if ((!reg.test(value)) && value != '') {callback(new Error('请输入正确的身份证号码'));} else {callback();}}
}/* 是否邮箱 */
export function validateEMail(rule, value,callback) {const reg =/^([a-zA-Z0-9]+[-_\.]?)+@[a-zA-Z0-9]+\.[a-z]+$/;if(value==''||value==undefined||value==null){callback();}else{if (!reg.test(value)){callback(new Error('请输入正确的邮箱地址'));} else {callback();}}
}/* 合法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 isPassword(rule, value, callback) {const reg =/^[_a-zA-Z0-9]+$/;if(value==''||value==undefined||value==null){callback();} else {if (!reg.test(value)){callback(new Error('密码仅由英文字母,数字以及下划线组成'));} else {callback();}}
}/* 自动检验数值的范围 */
export function checkMax20000(rule, value, callback) {if (value == '' || value == undefined || value == null) {callback();} else if (!Number(value)) {callback(new Error('请输入[1,20000]之间的数字'));} else if (value < 1 || value > 20000) {callback(new Error('请输入[1,20000]之间的数字'));} else {callback();}
}// 验证数字输入框最大数值,32767
export function checkMaxVal(rule, value,callback) {if (value < 0 || value > 32767) {callback(new Error('请输入[0,32767]之间的数字'));} else {callback();}
}// 验证是否1-99之间
export function isOneToNinetyNine(rule, value, callback) {if (!value) {return callback(new Error('输入不可以为空'));}setTimeout(() => {if (!Number(value)) {callback(new Error('请输入正整数'));} else {const re = /^[1-9][0-9]{0,1}$/;const rsCheck = re.test(value);if (!rsCheck) {callback(new Error('请输入正整数,值为【1,99】'));} else {callback();}}}, 0);
}// 验证是否整数
export function isInteger(rule, value, callback) {if (!value) {return callback(new Error('输入不可以为空'));}setTimeout(() => {if (!Number(value)) {callback(new Error('请输入正整数'));} else {const re = /^[0-9]*[1-9][0-9]*$/;const rsCheck = re.test(value);if (!rsCheck) {callback(new Error('请输入正整数'));} else {callback();}}}, 0);
}// 验证是否整数,非必填
export function isIntegerNotMust(rule, value, callback) {if (!value) {callback();}setTimeout(() => {if (!Number(value)) {callback(new Error('请输入正整数'));} else {const re = /^[0-9]*[1-9][0-9]*$/;const rsCheck = re.test(value);if (!rsCheck) {callback(new Error('请输入正整数'));} else {callback();}}}, 1000);
}// 验证是否是[0-1]的小数
export function isDecimal(rule, value, callback) {if (!value) {return callback(new Error('输入不可以为空'));}setTimeout(() => {if (!Number(value)) {callback(new Error('请输入[0,1]之间的数字'));} else {if (value < 0 || value > 1) {callback(new Error('请输入[0,1]之间的数字'));} else {callback();}}}, 100);
}// 验证是否是[1-10]的小数,即不可以等于0
export function isBtnOneToTen(rule, value, callback) {if (typeof value == 'undefined') {return callback(new Error('输入不可以为空'));}setTimeout(() => {if (!Number(value)) {callback(new Error('请输入正整数,值为[1,10]'));} else {if (!(value == '1' || value == '2' || value == '3' || value == '4' || value == '5' || value == '6' || value == '7' || value == '8' || value == '9' || value == '10')) {callback(new Error('请输入正整数,值为[1,10]'));} else {callback();}}}, 100);
}// 验证是否是[1-100]的小数,即不可以等于0
export function isBtnOneToHundred(rule, value, callback) {if (!value) {return callback(new Error('输入不可以为空'));}setTimeout(() => {if (!Number(value)) {callback(new Error('请输入整数,值为[1,100]'));} else {if (value < 1 || value > 100) {callback(new Error('请输入整数,值为[1,100]'));} else {callback();}}}, 100);
}// 验证是否是[0-100]的小数
export function isBtnZeroToHundred(rule, value, callback) {if (!value) {return callback(new Error('输入不可以为空'));}setTimeout(() => {if (!Number(value)) {callback(new Error('请输入[1,100]之间的数字'));} else {if (value < 0 || value > 100) {callback(new Error('请输入[1,100]之间的数字'));} else {callback();}}}, 100);
}// 验证端口是否在[0,65535]之间
export function isPort(rule, value, callback) {if (!value) {return callback(new Error('输入不可以为空'));}setTimeout(() => {if (value == '' || typeof(value) == undefined) {callback(new Error('请输入端口值'));} else {const re = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/;const rsCheck = re.test(value);if (!rsCheck) {callback(new Error('请输入在[0-65535]之间的端口值'));} else {callback();}}}, 100);
}// 验证端口是否在[0,65535]之间,非必填,isMust表示是否必填
export function isCheckPort(rule, value, callback) {if (!value) {callback();}setTimeout(() => {if (value == '' || typeof(value) == undefined) {//callback(new Error('请输入端口值'));} else {const re = /^([0-9]|[1-9]\d|[1-9]\d{2}|[1-9]\d{3}|[1-5]\d{4}|6[0-4]\d{3}|65[0-4]\d{2}|655[0-2]\d|6553[0-5])$/;const rsCheck = re.test(value);if (!rsCheck) {callback(new Error('请输入在[0-65535]之间的端口值'));} else {callback();}}}, 100);
}/* 小写字母 */
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 validatAlphabets(str) {const reg = /^[A-Za-z]+$/;return reg.test(str);
}

vue表单验证,多种校验规则相关推荐

  1. vue 表单验证并提交

    vue 表单验证并提交 一.常用验证方式 1.data 中验证 data 数据: 2.行内验证 3.引入外部定义的规则 二.表单提交时验证 1.表单的提交按钮 2.ethods 方法 一.常用验证方式 ...

  2. vue表单验证插件 vuerify

    表单验证是一个网站或者系统不可或缺的,也是非常重要的一环.使用人工匹配验证的话会非常的复杂,尤其对于大量表单验证更是如此. 当然有一些jQuery 表单验证的插件,或许用着还不错.但是,如果你不想在v ...

  3. Vue 表单验证插件的写作过程

    前段时间,老大搭好了Vue的开发环境,于是我们愉快地从JQ来到了Vue.这中间做的时候,在表单验证上做的不开心,看到vue的插件章节,感觉自己也能写一个,因此就自己开始写了一个表单验证插件va.js. ...

  4. 写一个简单易用可扩展vue表单验证插件(vue-validate-easy)

    写一个vue表单验证插件(vue-validate-easy) 需求 目标:简单易用可扩展 如何简单 开发者要做的 写了一个表单,指定一个name,指定其验证规则. 调用提交表单方法,可以获取验证成功 ...

  5. vue表单验证,不能通过验证

    vue表单验证一直不能通过 1.model里的值一定要和 js里面data的名称(formValidate)对应 2.rules里面的值要和js里面设定的表单规则(ruleValidate)对应 3. ...

  6. Vue 表单验证、数据验证

    graceUI js 模块 graceUI 官网 http://grace.hcoder.net 首页视频教程第一节可观看组件演示 (: 使用说明 1 将 graceChecker.js 部署到您的项 ...

  7. vue 表单验证按钮事件交由父组件触发

    vue 表单验证按钮事件交由父组件触发,不直接再子组件上操作的方法 子组件: //内容部分 <Form ref="formCustom" :model="formC ...

  8. vue表单验证(用户名、密码、身份证号、中文姓名、手机号、邮箱)

    vue表单验证(用户名.密码.身份证号.中文姓名.手机号.邮箱) new Vue({el: '#register',data: function() {// 验证邮箱let checkEmail = ...

  9. vue 表单验证正则_vue elementUI如何自定义表单验证规则

    一.elementUI自带了一部分表单验证规则,本文讲解如何使用自定义验证规则来完成密码的二次验证. 1.1.首先添加验证邮箱和电话规则和正则表达式// 验证邮箱的规则 var checkEmail  ...

最新文章

  1. linux c 获取屏幕信息,Linux C 获取本机相关信息
  2. 白岩松西湖大学演讲:科研人要学会讲故事,可以从发朋友圈开始练
  3. 【ORACLE】oracl基本操作笔记
  4. php html中的判断,php怎么判断字符串中是否包含html标签?
  5. python hacklib_【入门】angr:基于python的二进制分析框架
  6. Dapr微服务应用开发系列3:服务调用构件块
  7. 前端学习(3046):vue+element今日头条管理-页面布局和面包屑筛选
  8. 倪光南、求伯君“出山”:爱解 Bug、无惧“35岁魔咒”、编码之路痛并快乐!
  9. 微信公众帐号开发教程第11篇-符号表情的发送(上)
  10. KD-Tree原理详解
  11. html模仿抖音,仿抖音示例
  12. VS2017+OpenCV4.1.0(VC15)、VS2015+OpenCV3.4.1(VC14) 配置
  13. opencv cv::Mat::convertTo()函数
  14. 2014网络红人斌少网络红人彭伟个人资料
  15. 29、程序员的面试考题,要求用一个for循环打出乘法表。
  16. Navicat 的使用
  17. kindle特性和硬件介绍(不介绍操作和使用方法)
  18. oracle付款汇兑损益怎么产生,月末汇兑损益怎么算调整分录如何做
  19. java 字数_java 字数统计
  20. 10分钟教你用Python获取百度地图各点的经纬度信息

热门文章

  1. 3D视觉艺术大师班-C4D和Octane渲染学习教程
  2. CATIA 二次开发 CAA笔记.新的开始
  3. 虚拟机连不上网问题及解决
  4. 【已解决】MIUI升级12.5.8后没有永不锁屏选项
  5. 替换replace,translate
  6. 苹果手机功能大全介绍_苹果手机初级摄影介绍
  7. 福大计算机考研2020年报考人数,福州大学2020年考研报名人数
  8. OnyX for Mac v4.1.5 中文版 mac系统维护工具
  9. 轻松应对亿级流量,专享型API网关正式对外开放
  10. 敏感字检测or替换,并可以限定字符串长度