详解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 相关文章推荐
IE 下的只读 innerHTML
Aug 21 Javascript
Javascript 函数中的参数使用分析
Mar 27 Javascript
基于jquery的商品展示放大镜
Aug 07 Javascript
在JavaScript里嵌入大量字符串常量的实现方法
Jul 07 Javascript
JavaScript实现当网页加载完成后执行指定函数的方法
Mar 21 Javascript
jquery分页插件jquery.pagination.js使用方法解析
Apr 01 Javascript
D3.js实现散点图和气泡图的方法详解
Sep 21 Javascript
bootstrap datetimepicker日期插件使用方法
Jan 13 Javascript
关于使用js算总价的问题
Jun 23 Javascript
基于layui数据表格以及传数据的方式
Aug 19 Javascript
vue cli3.0结合echarts3.0与地图的使用方法示例
Mar 26 Javascript
jQuery-App输入框实现实时搜索
Nov 19 jQuery
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
paypal即时到账php实现代码
2010/11/28 PHP
基于PHP CURL用法的深入分析
2013/06/09 PHP
windows下PHP_intl.dll正确配置方法(apache2.2+php5.3.5)
2014/01/14 PHP
php5.2以下版本无json_decode函数的解决方法
2014/05/25 PHP
PHP实现绘制3D扇形统计图及图片缩放实例
2014/10/01 PHP
php使用glob函数快速查询指定目录文件的方法
2014/11/15 PHP
PHP实现字母数字混合验证码功能
2019/07/11 PHP
laravel实现Auth认证,登录、注册后的页面回跳方法
2019/09/30 PHP
学习ExtJS TextField常用方法
2009/10/07 Javascript
JavaScript 三种不同位置代码的写法
2009/10/25 Javascript
jquery操作下拉列表、文本框、复选框、单选框集合(收藏)
2014/01/08 Javascript
JavaScript将取代AppleScript?
2014/09/18 Javascript
AngularJS 使用$sce控制代码安全检查
2016/01/05 Javascript
学习JavaScript设计模式之模板方法模式
2016/01/20 Javascript
jQuery绑定事件-多种实现方式总结
2016/05/09 Javascript
BootStrap中Datepicker控件带中文的js文件
2016/08/10 Javascript
jQuery中checkbox反复调用attr('checked', true/false)只有第一次生效的解决方法
2016/11/16 Javascript
jQuery实现滚动效果
2017/11/17 jQuery
vue中如何动态绑定图片,vue中通过data返回图片路径的方法
2018/02/07 Javascript
vue--点击当前增加class,其他删除class的方法
2018/09/15 Javascript
使用setup.py安装python包和卸载python包的方法
2013/11/27 Python
Python中map和列表推导效率比较实例分析
2015/06/17 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
python os.fork() 循环输出方法
2019/08/08 Python
Python中操作各种多媒体,视频、音频到图片的代码详解
2020/06/04 Python
canvas画布实现手写签名效果的示例代码
2019/04/23 HTML / CSS
我想声明一个指针并为它分配一些空间, 但却不行。这些代码有什么 问题?char *p; *p = malloc(10);
2016/10/06 面试题
团员个人的自我评价
2013/12/02 职场文书
服装机修工岗位职责
2013/12/26 职场文书
简历上的自我评价怎么写
2014/01/28 职场文书
中文专业学生自我评价范文
2014/02/06 职场文书
年终总结会主持词
2014/03/25 职场文书
服装设计专业求职信
2014/06/16 职场文书
监察局领导班子四风问题整改措施思想汇报
2014/10/05 职场文书
个人存款证明书
2014/10/18 职场文书
Mysql 数据库中的 redo log 和 binlog 写入策略
2022/04/26 MySQL