详解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 相关文章推荐
jQuery实现id模糊查询的小例子
Mar 19 Javascript
JavaScript子类用Object.getPrototypeOf去调用父类方法解析
Dec 05 Javascript
javascript下拉列表中显示树形菜单的实现方法
Nov 17 Javascript
JS获取和修改元素样式的实例代码
Aug 06 Javascript
AngularJS入门教程之Helloworld示例
Dec 25 Javascript
基于Marquee.js插件实现的跑马灯效果示例
Jan 25 Javascript
详解webpack 如何集成第三方js库
Jun 29 Javascript
微信小程序 按钮滑动的实现方法
Sep 27 Javascript
vue使用Proxy实现双向绑定的方法示例
Mar 20 Javascript
Vue.set 全局操作简单示例
Sep 19 Javascript
详解Nuxt.js 实战集锦
Nov 19 Javascript
js数组相减简单示例【删除a数组所有与b数组相同元素】
Mar 04 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常用编译参数中文说明
2014/09/27 PHP
浅谈PHP array_search 和 in_array 函数效率问题
2019/10/15 PHP
JavaScript 创建对象和构造类实现代码
2009/07/30 Javascript
style、 currentStyle、 runtimeStyle区别分析
2010/08/01 Javascript
js 关键词高亮(根据ID/tag高亮关键字)案例介绍
2013/01/21 Javascript
纯JS实现动态时间显示代码
2014/02/08 Javascript
button没写type=button会导致点击时提交
2014/03/06 Javascript
javascript教程:关于if简写语句优化的方法
2014/05/17 Javascript
JS获得图片alt信息的方法
2015/04/01 Javascript
BootStrap中Tab页签切换实例代码
2016/05/30 Javascript
原生js仿jquery一些常用方法(必看篇)
2016/09/20 Javascript
基于jquery二维码生成插件qrcode
2017/01/07 Javascript
简单谈谈Javascript函数中的arguments
2017/02/09 Javascript
详谈AngularJs 控制器、数据绑定、作用域
2017/07/09 Javascript
jQuery结合jQuery.cookie.js插件实现换肤功能示例
2017/10/14 jQuery
Vue页面跳转动画效果的实现方法
2018/09/23 Javascript
vue 中 命名视图的用法实例详解
2019/08/14 Javascript
vue 组件间的通信之子组件向父组件传值的方式
2020/07/29 Javascript
寻找网站后台地址的python脚本
2014/09/01 Python
Python HTTP客户端自定义Cookie实现实例
2017/04/28 Python
Python操作SQLite数据库的方法详解【导入,创建,游标,增删改查等】
2017/07/11 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python利用turtle库绘制彩虹代码示例
2017/12/20 Python
python读取各种文件数据方法解析
2018/12/29 Python
python过滤中英文标点符号的实例代码
2019/07/15 Python
wxPython实现列表增删改查功能
2019/11/19 Python
pyinstaller还原python代码过程图解
2020/01/08 Python
Python写出新冠状病毒确诊人数地图的方法
2020/02/12 Python
Django-xadmin后台导入json数据及后台显示信息图标和主题更改方式
2020/03/11 Python
浅析Python模块之间的相互引用问题
2021/02/26 Python
对pytorch中x = x.view(x.size(0), -1) 的理解说明
2021/03/03 Python
双立人加拿大官网:Zwilling加拿大
2020/08/10 全球购物
为什么要使用servlet
2016/01/17 面试题
出生医学证明样本
2014/01/17 职场文书
民族团结好少年事迹材料
2014/08/19 职场文书
物业保安辞职信
2015/05/12 职场文书