详解vue如何使用rules对表单字段进行校验


Posted in Javascript onOctober 17, 2018

1、在代码中,添加属性::rule

<Form ref="loginForm" :model="form" :rules="rules" @keydown.enter.native="handleSubmit" class="form-con">
            <FormItem prop="phone">
              <Input v-model="form.phone" prefix="md-person" placeholder="请输入您的手机号" size="large" class="login-form-input" :maxlength="11"></Input>
            </FormItem>
            <FormItem prop="password">
              <Input type="password" v-model="form.password" prefix="md-lock" placeholder="请输入您的密码" size="large" class="login-form-input" :maxlength="100"></Input>
            </FormItem>
            <FormItem prop="code">
              <Input v-model="form.code" placeholder="请输入验证码" prefix="ios-barcode" size="large" class="login-form-input" :maxlength="4"></Input>
              <img @click="refLoginImg" :src="loginImgSrc" class="login-img"/>
            </FormItem>
            <FormItem>
              <Button @click="handleSubmit" :loading="submitLoading" type="info" long size="large" class="login-btn" icon="md-log-in">
                <span v-if="!submitLoading">立即登录</span>
                <span v-else>正在登录,请稍候...</span>
              </Button>
            </FormItem>
          </Form>

2.新建一个文件(validate.js)定义验证规则

/** 这个文件只允许放表单验证方法 **/

//验证手机号
export function isPhone(rule, value, callback) {
  if (!value) {
    return callback(new Error('输入不可以为空'));
  }
  var pattern = /^1[34578]\d{9}$/
  if(pattern.test(value)){
    return callback()
  }
  return callback(new Error('输入的手机号错误'))
}

3、在页面(xx.vue)中引入验证规则定义的文件,并在export default中定义rule规则,使用语法:{validator:验证方法,trigger:验证触发} validator

rules: {
          phone: [
            { required: true, message: '手机号不能为空', trigger: 'blur' },
            { type: 'string', min: 11, message: '手机号不允许小于11位', trigger: 'blur' },
            { validator: isPhone, trigger: 'blur' },
          ],
          password: [
            { required: true, message: '密码不能为空', trigger: 'blur' },
            { type: 'string', min: 6, message: '密码不允许小于6位', trigger: 'blur' },
          ],
          code: [
            { required: true, message: '验证码不能为空', trigger: 'blur' },
            { type: 'string', min: 4, message: '验证码必须是4位', trigger: 'blur' },
          ],
        },

以下是validator.js文件的部分验证方法

/* 是否是公司邮箱*/
export function isWscnEmail(str) {
 const reg = /^[a-z0-9](?:[-_.+]?[a-z0-9]+)*@wallstreetcn\.com$/i;
 return reg.test(str.trim());
}

/* 合法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 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();
   }
  }
 }, 1000);
}


// 验证是否是[0-1]的小数
export function isDecimal(rule, value, callback) {
 if (!value) {
  return callback(new Error('输入不可以为空'));
 }
 setTimeout(() => {
  if (!Number(value)) {
   callback(new Error('请输入数字'));
  } else {
   if (value < 0 || value > 1) {
    callback(new Error('请输入[0,1]之间的数字'));
   } else {
    callback();
   }
  }
 }, 1000);
}

// 验证端口是否在[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();
   }
  }
 }, 1000);
}

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

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript延时重复执行函数 lLoopRun.js
Jun 29 Javascript
容易造成JavaScript内存泄露几个方面
Sep 04 Javascript
jQuery定义背景动态切换效果的方法
Mar 23 Javascript
javascript中动态函数用法实例分析
May 14 Javascript
浅谈JavaScript前端开发的MVC结构与MVVM结构
Jun 03 Javascript
jQuery的图片轮播插件PgwSlideshow使用详解
Aug 11 Javascript
JS前端开发判断是否是手机端并跳转操作(小结)
Feb 05 Javascript
JavaScript中的FileReader图片预览上传功能实现代码
Jul 24 Javascript
实现一个完整的Node.js RESTful API的示例
Sep 29 Javascript
vue3.0 CLI - 3.2 路由的初级使用教程
Sep 20 Javascript
在vue 中使用 less的教程详解
Sep 26 Javascript
微信小程序实现订单倒计时
Nov 01 Javascript
Vue绑定内联样式问题
Oct 17 #Javascript
react 应用多入口配置及实践总结
Oct 17 #Javascript
vue+echarts实现动态绘制图表及异步加载数据的方法
Oct 17 #Javascript
手把手教你写一个微信小程序(推荐)
Oct 17 #Javascript
微信小程序开发之tabbar图标和颜色的实现
Oct 17 #Javascript
解决百度Echarts图表坐标轴越界的方法
Oct 17 #Javascript
vue实现循环切换动画
Oct 17 #Javascript
You might like
php垃圾代码优化操作代码
2010/08/05 PHP
PHP curl 获取响应的状态码的方法
2014/01/13 PHP
php中使用in_array() foreach array_search() 查找数组是否包含时的性能对比
2015/04/14 PHP
PHP 将dataurl转成图片image方法总结
2016/10/14 PHP
php中引用符号(&amp;)的使用详细介绍
2016/12/06 PHP
Laravel框架模板加载,分配变量及简单路由功能示例
2018/06/11 PHP
html读出文本文件内容
2007/01/22 Javascript
javascript 写类方式之五
2009/07/05 Javascript
JQuery+DIV自定义滚动条样式的具体实现
2013/06/25 Javascript
Javascript异步编程模型Promise模式详细介绍
2014/05/08 Javascript
jQuery中DOM树操作之复制元素的方法
2015/01/23 Javascript
javascript事件捕获机制【深入分析IE和DOM中的事件模型】
2016/12/15 Javascript
webpack 样式加载的实现原理
2018/06/12 Javascript
如何在Vue中使用CleaveJS格式化你的输入内容
2018/12/14 Javascript
详解javascript 变量提升(Hoisting)
2019/03/12 Javascript
浅谈Angular单元测试总结
2019/03/22 Javascript
vue element 关闭当前tab 跳转到上一路由操作
2020/07/22 Javascript
原生js实现贪吃蛇游戏
2020/10/26 Javascript
[43:58]DOTA2-DPC中国联赛定级赛 LBZS vs SAG BO3第一场 1月8日
2021/03/11 DOTA
Python守护进程(daemon)代码实例
2015/03/06 Python
python实现查找excel里某一列重复数据并且剔除后打印的方法
2015/05/26 Python
PyChar学习教程之自定义文件与代码模板详解
2017/07/17 Python
Django处理文件上传File Uploads的实例
2018/05/28 Python
深入理解Python中的 __new__ 和 __init__及区别介绍
2018/09/17 Python
python global和nonlocal用法解析
2020/02/03 Python
python扫描线填充算法详解
2020/02/19 Python
django API 中接口的互相调用实例
2020/04/01 Python
Html5 APP中监听返回事件处理的方法示例
2018/03/15 HTML / CSS
采购人员的个人自我评价
2014/01/16 职场文书
总会计师岗位职责
2014/02/19 职场文书
高一军训的心得体会
2014/09/01 职场文书
基层党组织建设整改方案
2014/09/16 职场文书
2014年大学教师工作总结
2014/12/02 职场文书
2015年村计划生育工作总结
2015/04/28 职场文书
python中的sys模块和os模块
2022/03/20 Python
css3手动实现pc端横向滚动
2022/06/21 HTML / CSS