详解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 UI Autocomplete 1.8.16 中文输入修正代码
Apr 16 Javascript
jQuery的控件及事件(输入控件及回车事件)使用示例
Jul 25 Javascript
浅析javascript中function 的 length 属性
May 27 Javascript
解决js函数闭包内存泄露问题的办法
Jan 25 Javascript
JS加载器如何动态加载外部js文件
May 26 Javascript
jQuery zTree树插件简单使用教程
Jan 10 Javascript
原生js实现中奖信息无间隙滚动效果
Jan 18 Javascript
javascript实现下雨效果
Mar 27 Javascript
javascript实现非常简单的小数取整功能示例
Jun 13 Javascript
解决vue组件中使用v-for出现告警问题及v for指令介绍
Nov 11 Javascript
Angular实现双向折叠列表组件的示例代码
Nov 21 Javascript
基于node搭建服务器,写接口,调接口,跨域的实例
May 13 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程序员必备技能
2015/11/13 PHP
Ubuntu彻底删除PHP7.0的方法
2018/07/27 PHP
dwz 如何去掉ajaxloading具体代码
2013/05/22 Javascript
js 判断计算字符串长度/判断空的简单方法
2013/08/05 Javascript
利用JQuery制作符合Web标准的QQ弹出消息
2014/01/14 Javascript
js计算任意值之间随机数的方法
2015/01/16 Javascript
js实现class样式的修改、添加及删除的方法
2015/01/20 Javascript
jquery实现表单验证并阻止非法提交
2015/07/09 Javascript
BootStrap无限级分类(无限极分类封装版)
2016/08/26 Javascript
微信小程序页面开发注意事项整理
2017/05/18 Javascript
canvas绘制爱心的几种方法总结(推荐)
2017/10/31 Javascript
微信小程序使用modal组件弹出对话框功能示例
2017/11/29 Javascript
基于node下的http小爬虫的示例代码
2018/01/11 Javascript
vue 动态绑定背景图片的方法
2018/08/10 Javascript
python中getattr函数使用方法 getattr实现工厂模式
2014/01/20 Python
Python中的rfind()方法使用详解
2015/05/19 Python
深入理解Python分布式爬虫原理
2017/11/23 Python
python编程测试电脑开启最大线程数实例代码
2018/02/09 Python
利用scrapy将爬到的数据保存到mysql(防止重复)
2018/03/31 Python
python3+PyQt5泛型委托详解
2018/04/24 Python
Python字符串的一些操作方法总结
2019/06/10 Python
Python-Seaborn热图绘制的实现方法
2019/07/15 Python
Python原始套接字编程实例解析
2020/01/29 Python
keras 实现轻量级网络ShuffleNet教程
2020/06/19 Python
Pycharm制作搞怪弹窗的实现代码
2021/02/19 Python
对Pytorch 中的contiguous理解说明
2021/03/03 Python
详解CSS3:overflow属性
2020/11/17 HTML / CSS
基于html5绘制圆形多角图案
2016/04/21 HTML / CSS
个人简历中的自我评价范例
2013/10/29 职场文书
幼儿园实习自我鉴定
2013/12/15 职场文书
医药工作岗位求职信分享
2013/12/31 职场文书
银行党的群众路线教育实践活动对照检查材料
2014/09/25 职场文书
教师个人师德总结
2015/02/06 职场文书
小学数学新课改心得体会
2016/01/22 职场文书
如何在Python中创建二叉树
2021/03/30 Python
Python+DeOldify实现老照片上色功能
2022/06/21 Python