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 相关文章推荐
给artDialog 5.02 增加ajax get功能详细介绍
Nov 13 Javascript
javascript设计简单的秒表计时器
Sep 05 Javascript
详解AngularJS中的filter过滤器用法
Jan 04 Javascript
Bootstrap精简教程中秋大放送
Sep 15 Javascript
原生JS京东轮播图代码
Mar 22 Javascript
js 倒计时(高效率服务器时间同步)
Sep 12 Javascript
webpack 打包压缩js和css的方法示例
Mar 20 Javascript
Vuejs2 + Webpack框架里,模拟下载的实例讲解
Sep 05 Javascript
js中怎么判断两个字符串相等的实例
Jan 17 Javascript
基于vue与element实现创建试卷相关功能(实例代码)
Dec 07 Vue.js
详解微信小程序(Taro)手动埋点和自动埋点的实现
Mar 02 Javascript
详解Vue3使用axios的配置教程
Apr 29 Vue.js
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
全国FM电台频率大全 - 27 陕西省
2020/03/11 无线电
咖啡知识 咖啡养豆要养多久 排气又是什么
2021/03/06 新手入门
精美漂亮的php分页类代码
2013/04/02 PHP
PHP中对于浮点型的数据需要用不同的方法解决
2014/03/11 PHP
php版微信js-sdk支付接口类用法示例
2016/10/12 PHP
Yii2框架操作数据库的方法分析【以mysql为例】
2019/05/27 PHP
csdn 批量接受好友邀请
2009/02/19 Javascript
简介JavaScript中Math.cos()余弦方法的使用
2015/06/15 Javascript
Vue.js学习笔记之 helloworld
2016/08/14 Javascript
js控制文本框只能输入中文、英文、数字与指定特殊符号的实现代码
2016/09/09 Javascript
VUE 更好的 ajax 上传处理 axios.js实现代码
2017/05/10 Javascript
原生js二级联动效果
2017/06/20 Javascript
浅析JavaScript中的平稳退化(graceful degradation)
2017/07/24 Javascript
JavaScript 数组的进化与性能分析
2017/09/18 Javascript
JS动态插入脚本和插入引用外部链接脚本的方法
2018/05/21 Javascript
vue用Object.defineProperty手写一个简单的双向绑定的示例
2018/07/09 Javascript
Vue从TodoList中学父子组件通信
2019/02/05 Javascript
JS前端面试必备——基本排序算法原理与实现方法详解【插入/选择/归并/冒泡/快速排序】
2020/02/24 Javascript
[37:02]OG vs INfamous 2019国际邀请赛小组赛 BO2 第二场 8.15
2019/08/17 DOTA
Python装饰器入门学习教程(九步学习)
2016/01/28 Python
Django实战之用户认证(初始配置)
2018/07/16 Python
flask-restful使用总结
2018/12/04 Python
详解用python自制微信机器人,定时发送天气预报
2019/03/25 Python
python绘制地震散点图
2019/06/18 Python
nginx黑名单和django限速,最简单的防恶意请求方法分享
2019/08/09 Python
双向RNN:bidirectional_dynamic_rnn()函数的使用详解
2020/01/20 Python
竞聘演讲稿范文
2014/01/12 职场文书
2014新年寄语
2014/01/20 职场文书
模具专业求职信
2014/06/26 职场文书
退休党员个人对照检查材料思想汇报
2014/09/29 职场文书
师德师风个人整改措施
2014/10/27 职场文书
三好学生个人总结
2015/02/15 职场文书
年度考核个人总结
2015/03/06 职场文书
pandas求平均数和中位数的方法实例
2021/08/04 Python
Spring Data JPA框架自定义Repository接口
2022/04/28 Java/Android
深入理解 Golang 的字符串
2022/05/04 Golang