zoukankan      html  css  js  c++  java
  • Vue使用rules对表单字段进行校验

    欢迎一起讨论

    Geooo的个人博客:https://geooo.gitee.io/geoooblog/

    环境:基于 Vue + ElementUI

    1. 在 el-form 标签内添加 rules 属性 ,并在<el-form-item> 内添 prop 属性去对应 rules 中的规则
    <el-form :model="form" :rules="rules" ref="form" lable-width="100px">
    
        <el-form-item label="商品ID" prop="id" >
            <el-input v-model="form.id" placeholder="输入订单号" clearable></el-input>
        </el-form-item>
        
        <el-form-item lable="商品名称" prop="name">
            <el-input v-model="form.name" placeholder="输入商品名称" clearble></el-input>
        </el-form-item>
        
        <el-form-item lable="商品分类" prop="sort">
            <el-input v-model="form.sort" placeholder="选择商品分类" clearble></el-input>
        </el-form-item>
        
        <el-form-item lable="商品数量" prop="count">
            <el-input v-model="form.count" placeholder="选择商品数量" clearble></el-input>
        </el-form-item>
    
    </el-form>
    
    
    1. 创建一个约束函数( validate.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);
    }
    
    

    3.在我们当前vue页面引入 validate.js 验证规则文件,在export default中定义rules规则,使用语法为: {validate:验证方法 , trigger: 触发条件}

    import { isInteger } from '../../util/validate.js'; //引入规则验证js
    
    export default {
        name: 'buyDetail',
        data(){
            form: {
                id: '',
                name: '',
                sort: '',
                count: '',
            },
            
            rules: {
                id: [{ require: true, message: '请输入商品ID', trigger: 'blur'},{ validate: 'isInteger',trigger: 'blur'}],
                name: [{ require: true, message: '请输入商品名称'}, trigger: 'blur'}],
                sort: [{ require: true, message:'请输入商品分类', trigger: 'blur'},{ validate: 'isInteger', trigger:'blur'}],
                count: [{ require: true, message:'请输入商品数量',trigger: 'blur'}, { validate:'isInteger',trigger:'blur'}]
                
            },
        }
        
    }
    

     

  • 相关阅读:
    Codeforces 377 A Maze【DFS】
    分糖果 5.0升级版
    poj_1201_Intervals
    NOIP2016全国信息学分区联赛提高组第二试 组合问题
    NOIP2016全国信息学分区联赛提高组第一试 玩具迷题
    NOIP 2016提高组总结
    2016年提高组模拟试题(20161105)Mahjong
    打鼹鼠
    2015年普级组模拟试题 小X的矩阵
    交汇的火力
  • 原文地址:https://www.cnblogs.com/Geooo/p/11279481.html
Copyright © 2011-2022 走看看