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 相关文章推荐
Javascript的IE和Firefox兼容性汇编
Jul 01 Javascript
jQuery学习笔记(2)--用jquery实现各种模态提示框代码及项目构架
Apr 08 Javascript
判断JS对象是否拥有某种属性的两种方式
Dec 02 Javascript
JavaScript函数作用域链分析
Feb 13 Javascript
使用jQuery获得内容以及内容的属性
Feb 26 Javascript
Jquery实现的简单轮播效果【附实例】
Apr 19 Javascript
深入理解JS函数的参数(arguments)的使用
May 28 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
May 09 Javascript
浅谈angularJS的$watch失效问题的解决方案
Aug 11 Javascript
Vue监听一个数组id是否与另一个数组id相同的方法
Sep 26 Javascript
微信小程序下拉刷新PullDownRefresh的使用方法
Nov 29 Javascript
微信小程序与后台PHP交互的方法实例分析
Dec 10 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源代码
2006/10/09 PHP
用PHP进行MySQL删除记录操作代码
2008/06/07 PHP
Laravel 5框架学习之向视图传送数据
2015/04/08 PHP
php的socket编程详解
2016/11/20 PHP
详解PHP数据压缩、加解密(pack, unpack)
2016/12/17 PHP
Laravel5.4框架使用socialite实现github登录的方法
2019/03/20 PHP
IE6下出现JavaScript未结束的字符串常量错误的解决方法
2010/11/21 Javascript
面向对象Javascript核心支持代码分享
2012/05/23 Javascript
jquery.form.js用法之清空form的方法
2014/03/07 Javascript
通过伪协议解决父页面与iframe页面通信的问题
2015/04/05 Javascript
简单讲解AngularJS的Routing路由的定义与使用
2016/03/05 Javascript
jQuery Ajax 实现在html页面实时显示用户登录状态
2016/12/30 Javascript
详解JS中遍历语法的比较
2017/04/07 Javascript
使用prop解决一个checkbox选中后再次选中失效的问题
2017/07/05 Javascript
js前端导出Excel的方法
2017/11/01 Javascript
如何开发出更好的JavaScript模块
2017/12/22 Javascript
玩转Koa之核心原理分析
2018/12/29 Javascript
vue中axios的二次封装实例讲解
2019/10/14 Javascript
图解JS原型和原型链实现原理
2020/09/15 Javascript
python人人网登录应用实例
2014/09/26 Python
Python使用PIL模块生成随机验证码
2017/11/21 Python
Flask框架实现给视图函数增加装饰器操作示例
2018/07/16 Python
使用python实现语音文件的特征提取方法
2019/01/09 Python
GitHub 热门:Python 算法大全,Star 超过 2 万
2019/04/29 Python
Python除法之传统除法、Floor除法及真除法实例详解
2019/05/23 Python
python函数修饰符@的使用方法解析
2019/09/02 Python
Python随机数函数代码实例解析
2020/02/09 Python
pytorch ImageFolder的覆写实例
2020/02/20 Python
娇韵诗加拿大官网:Clarins加拿大
2017/11/20 全球购物
教你怎样写好自我评价
2013/10/05 职场文书
党员评议表自我评价范文
2014/10/20 职场文书
2015年清剿火患专项行动工作总结
2015/07/27 职场文书
MySQL Innodb索引机制详细介绍
2021/11/23 MySQL
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers
2022年四月新番
2022/03/15 日漫
MongoDB支持的索引类型
2022/04/11 MongoDB