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 相关文章推荐
JSON 教程 json入门学习笔记
Sep 22 Javascript
验证控件与Button的OnClientClick事件详细解析
Dec 04 Javascript
node.js中的querystring.parse方法使用说明
Dec 10 Javascript
js实现从右向左缓缓浮出网页浮动层广告的方法
May 09 Javascript
JS使用onerror捕获异常示例
Aug 03 Javascript
浅谈vuex 闲置状态重置方案
Jan 04 Javascript
vue中动态添加class类名的方法
Sep 05 Javascript
移动端滑动切换组件封装 vue-swiper-router实例详解
Nov 25 Javascript
layui字体图标 loading图标静止不旋转的解决方法
Sep 23 Javascript
微信小程序分享小程序码的生成(带参数)以及参数的获取
Mar 25 Javascript
JavaScript 实现自己的安卓手机自动化工具脚本(推荐)
May 13 Javascript
解决vue init webpack 下载依赖卡住不动的问题
Nov 09 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
德生S2000南麂列岛台湾FM收听记录
2021/03/02 无线电
php mysql Errcode: 28 终极解决方法
2009/07/01 PHP
php判断ip黑名单程序代码实例
2014/02/24 PHP
php在数据库抽象层简单使用PDO的方法
2015/11/03 PHP
TP5.0框架实现无限极回复功能的方法分析
2019/05/04 PHP
JavaScript实现页面实时显示当前时间的简单实例
2013/07/20 Javascript
Tab切换组件(选项卡功能)实例代码
2013/11/21 Javascript
Nodejs极简入门教程(二):定时器
2014/10/25 NodeJs
AngularJS中的模块详解
2015/01/29 Javascript
jquery简单插件制作(fn.extend)完整实例
2016/05/24 Javascript
window.open不被拦截的简单实现代码(推荐)
2016/08/04 Javascript
js禁止浏览器的回退事件
2017/04/20 Javascript
JQuery form表单提交前验证单选框是否选中、删除记录时验证经验总结(整理)
2017/06/09 jQuery
vue填坑之webpack run build 静态资源找不到的解决方法
2018/09/03 Javascript
JavaScript实现旋转木马轮播图
2020/03/16 Javascript
浅谈js中的attributes和Attribute的用法与区别
2020/07/16 Javascript
python运行其他程序的实现方法
2017/07/14 Python
Python中列表与元组的乘法操作示例
2018/02/10 Python
Windows下安装Django框架的方法简明教程
2018/03/28 Python
python使用Matplotlib画饼图
2018/09/25 Python
python 格式化输出百分号的方法
2019/01/20 Python
Python使用字典的嵌套功能详解
2019/02/27 Python
PyTorch预训练的实现
2019/09/18 Python
利用Python的sympy包求解一元三次方程示例
2019/11/22 Python
Python 改变数组类型为uint8的实现
2020/04/09 Python
PyCharm中配置PySide2的图文教程
2020/06/18 Python
详解CSS3中字体平滑处理和抗锯齿渲染
2017/03/29 HTML / CSS
html5 的a标签 Href 拨电话的写法
2013/11/04 HTML / CSS
土耳其新趋势女装购物网站:Addax
2020/01/07 全球购物
一句话工作感言
2014/03/01 职场文书
少先队学雷锋活动总结范文
2014/03/09 职场文书
入党群众意见范文
2015/06/02 职场文书
《正比例》教学反思
2016/02/23 职场文书
python爬取豆瓣电影TOP250数据
2021/05/23 Python
使用redis生成唯一编号及原理示例详解
2021/09/15 Redis
springboot创建的web项目整合Quartz框架的项目实践
2022/06/21 Java/Android