vue表单自定义校验规则介绍


Posted in Javascript onAugust 28, 2018

如下所示:

<div id="app">
<el-form :model="ruleForm2" :rules="rules2" ref="ruleForm2" label-width="100px" class="demo-ruleForm">
 <el-form-item label="密码" prop="pass">
  <el-input type="password" v-model="ruleForm2.pass" auto-complete="off"></el-input>
 </el-form-item>
 <el-form-item label="确认密码" prop="checkPass">
  <el-input type="password" v-model="ruleForm2.checkPass" auto-complete="off"></el-input>
 </el-form-item>
 <el-form-item label="年龄" prop="age">
  <el-input v-model.number="ruleForm2.age"></el-input>
 </el-form-item>
 <el-form-item>
  <el-button type="primary" @click="submitForm('ruleForm2')">提交</el-button>
  <el-button @click="resetForm('ruleForm2')">重置</el-button>
 </el-form-item>
</el-form>
</div>
var Main = {
  data() {
   var checkAge = (rule, value, callback) => {
    if (!value) {
     return callback(new Error('年龄不能为空'));
    }
    setTimeout(() => {
     if (!Number.isInteger(value)) {
      callback(new Error('请输入数字值'));
     } else {
      if (value < 18) {
       callback(new Error('必须年满18岁'));
      } else {
       callback();
      }
     }
    }, 1000);
   };
   var validatePass = (rule, value, callback) => {
    if (value === '') {
     callback(new Error('请输入密码'));
    } else {
     if (this.ruleForm2.checkPass !== '') {
      this.$refs.ruleForm2.validateField('checkPass');
     }
     callback();
    }
   };
   var validatePass2 = (rule, value, callback) => {
    if (value === '') {
     callback(new Error('请再次输入密码'));
    } else if (value !== this.ruleForm2.pass) {
     callback(new Error('两次输入密码不一致!'));
    } else {
     callback();
    }
   };
   return {
    ruleForm2: {
     pass: '',
     checkPass: '',
     age: ''
    },
    rules2: {
     pass: [
      { validator: validatePass, trigger: 'blur' }
     ],
     checkPass: [
      { validator: validatePass2, trigger: 'blur' }
     ],
     age: [
      { validator: checkAge, trigger: 'blur' }
     ]
    }
   };
  },
  methods: {
   submitForm(formName) {
    this.$refs[formName].validate((valid) => {
     if (valid) {
      alert('submit!');
     } else {
      console.log('error submit!!');
      return false;
     }
    });
   },
   resetForm(formName) {
    this.$refs[formName].resetFields();
   }
  }
 }
var Ctor = Vue.extend(Main)
new Ctor().$mount('#app')

vue2.X+elementUI表单自定义验证方法

<template>
 <div class="taxi-appointment-dairen">
  <el-form :model="ruleForm" :rules="rules" ref="ruleForm">
   <div class="dairen-input">
    <el-form-item>
     <el-input
      v-model="ruleForm.name"
      placeholder="请输入乘车人姓名(选填)">
     </el-input>
    </el-form-item>
    <i class="fa fa-user fa-2x"></i>
   </div>
   <div class="dairen-input">
    <el-form-item prop="number">
     <el-input
      v-model="ruleForm.number"
      placeholder="请输入乘车人手机号码">
     </el-input>
    </el-form-item>
    <i class="fa fa-mobile-phone fa-2x"></i>
   </div>
   <div class="popover-btn">
    <el-button @click="submitForm('ruleForm')" type="primary">确定</el-button>
   </div>
  </el-form>
 </div>
</template>
<script>
 export default {
  data () {
   var ruleNumber = (rule, value, callback) => {
    var myreg = /^[1][3,4,5,7,8][0-9]{9}$/;
    if (value === '') {
     callback(new Error('请输入乘车人手机号码'));
    } else if(!myreg.test(value)) {
     callback(new Error('请输入正确乘车人手机号码'));
    }else {
     callback();  //重点在这 如果在验证通过后不添加callback()函数在验证时是条件会为false
    }
   };
   return {
    ruleForm: {
     name: '',
     number: ''
    },
    rules: {
     number: [{ validator: ruleNumber, trigger: 'blur' }]
    }
   }
  },
  methods: {
   submitForm (formName) {
    this.$refs[formName].validate((valid) => {
     if (valid) {   //在验证通过时时不返回callback()时 这一步进不来
      console.log(valid)
     } else {
      return false
     }
    });
   }
  }
 }
</script>

以上这篇vue表单自定义校验规则介绍就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery学习基础知识小结
Nov 25 Javascript
基于jQuery的history历史记录插件
Dec 11 Javascript
js动态设置鼠标事件示例代码
Oct 30 Javascript
PHP开发者必须掌握的6个关键字
Apr 14 Javascript
JavaScript获取路径设计源码
May 22 Javascript
jquery 正整数数字校验正则表达式
Jan 10 Javascript
jQuery实现CheckBox全选、全不选功能
Jan 11 Javascript
vue按需引入element Transfer 穿梭框
Sep 30 Javascript
详解Angular6学习笔记之主从组件
Sep 05 Javascript
vue中多个倒计时实现代码实例
Mar 27 Javascript
vue组件之间的数据传递方法详解
Apr 19 Javascript
使用js获取身份证年龄的示例代码
Dec 11 Javascript
vue+axios+mock.js环境搭建的方法步骤
Aug 28 #Javascript
Vue实现用户自定义字段显示数据的方法
Aug 28 #Javascript
浅谈VUE单页应用首屏加载速度优化方案
Aug 28 #Javascript
浅谈redux以及react-redux简单实现
Aug 28 #Javascript
Vue封装的可编辑表格插件方法
Aug 28 #Javascript
JavaScript使用递归和循环实现阶乘的实例代码
Aug 28 #Javascript
vue-router路由懒加载的实现(解决vue项目首次加载慢)
Aug 28 #Javascript
You might like
php教程 插件机制在PHP中实现方案
2012/11/02 PHP
PHP 实现base64编码文件上传出现问题详解
2020/09/01 PHP
jqPlot jquery的页面图表绘制工具
2009/07/25 Javascript
通过jQuery打造支持汉字,拼音,英文快速定位查询的超级select插件
2010/06/18 Javascript
Web开发者必备的12款超赞jQuery插件
2010/12/03 Javascript
JavaScript在多浏览器下for循环的使用方法
2012/11/07 Javascript
基于jQuery中对数组进行操作的方法
2013/04/16 Javascript
jquery next nextAll nextUntil siblings的区别介绍
2013/10/05 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JavaScript异步回调的Promise模式封装实例
2014/06/07 Javascript
JavaScript实现的GBK、UTF8字符串实际长度计算函数
2014/08/27 Javascript
移动设备web开发首选框架:zeptojs介绍
2015/01/29 Javascript
分享一个自己写的简单的javascript分页组件
2015/02/15 Javascript
简单介绍JavaScript中字符串创建的基本方法
2015/07/07 Javascript
JavaScript运动框架 多物体任意值运动(三)
2017/05/17 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
vue-cli脚手架引入图片的几种方法总结
2018/03/13 Javascript
详解封装基础的angular4的request请求方法
2018/06/05 Javascript
微信小程序如何修改本地缓存key中单个数据的详解
2019/04/26 Javascript
在layui.use 中自定义 function 的正确方法
2019/09/16 Javascript
javascript实现视频弹幕效果(两个版本)
2019/11/28 Javascript
JavaScript实现复选框全选和取消全选
2020/11/20 Javascript
[14:19]2018年度COSER大赛-完美盛典
2018/12/16 DOTA
python返回昨天日期的方法
2015/05/13 Python
在Python程序中操作文件之isatty()方法的使用教程
2015/05/24 Python
用python 实现在不确定行数情况下多行输入方法
2019/01/28 Python
python openpyxl使用方法详解
2019/07/18 Python
Python变量、数据类型、数据类型转换相关函数用法实例详解
2020/01/09 Python
python 遗传算法求函数极值的实现代码
2020/02/11 Python
Tensorflow之MNIST CNN实现并保存、加载模型
2020/06/17 Python
Python3爬虫里关于识别微博宫格验证码的知识点详解
2020/07/30 Python
购买瑞典当代设计的腕表和太阳眼镜:TRIWA
2016/10/30 全球购物
澳大利亚购买最佳炊具品牌网站:Cookware Brands
2019/02/16 全球购物
PatPat德国:妈妈的每日优惠
2019/10/02 全球购物
通信工程专业求职信
2014/06/04 职场文书
车辆安全隐患排查制度
2015/08/05 职场文书