• element-ui-verify使用


      element-ui-verify是对ElementUI原本的校验封装之后的插件,并不会影响使用ElementUI的原生校验。

    使用环境为vue+element-ui+webpack模块环境,首先使用淘宝镜像安装cnpm install -s element-ui-verify,安装之后在main.js中引入并使用

    1 import elementUIVerify from 'element-ui-verify'
    2 
    3 // 注意使用之前必须要先use elementUI
    4 Vue.use(elementUIVerify)

    main.js使用之后就可以直接在el-form-item标签上使用校验规则了,例如下面代码表示内容大于0的校验:

    1 <el-form-item label="年龄" prop="age" verify int :gt="0">
    2       <el-input v-model.number="model.age"></el-input>
    3 </el-form-item>

    默认支持的校验规则

    length 校验文本长度
    minLength 校验文本最短长度
    gt 校验数字要大于某数
    gte 校验数字要大于等于某数
    lt 校验数字要小于某数
    lte 校验数字要小于等于某数
    maxDecimalLength 校验数字最大小数位
    number 校验是否为数字
    int 校验是否为整数
    phone 校验是否为手机号(随着号段的增加,未来可能需要更新)
    email 校验是否为电子邮件地址
    verifyCode 校验是否为6位数字验证码

    使用这个插件,verify是必须的,如果想使用原生的elementUI校验规则就不需要写verify。

    其他关键字说名

    canBeEmpty:可以为空,当不为空时又需要校验;

    space:使用该关键字时空格也参加校验;

    emptyMessage:空检测错误提示;

    errorMessage:自定义校验不通过提示;

    1 <el-form-item prop="numberProp" verify number error-message="请输入正确的数字"></el-form-item>

    alias:复用错误提示,插件默认值:"该输入项",使用这个关键字可以{alias}不能为空

    例如空检测错误提示模板为:

    1 {empty: '{alias}不能为空'}

    表单内容为:

    1 <el-form-item prop="unknown" verify></el-form-item>
    2 <el-form-item alias="姓名" prop="name" verify></el-form-item>
    3 <el-form-item label="地址" prop="address" verify></el-form-item>
    • unknown输入框为空时,会提示"该输入项不能为空"(alias值默认为"该输入项")
    • 姓名输入框为空时,会提示"姓名不能为空"(显式设置了alias值时,提示内容自然会以该值去替换模板)
    • 地址输入框为空时,会提示"地址不能为空"(大部分el-form-item都需要设置一个label项,而label项往往就代表该输入项的alias,因此插件会取该值直接作为alias)

    watch:监听其他变量触发自身校验,例如修改密码

     1 <template>
     2   <el-form :model="model">
     3     <el-form-item label="密码" prop="pass1" verify>
     4       <el-input v-model="model.pass1"></el-input>
     5     </el-form-item>
     6     <el-form-item label="确认密码" prop="pass2" :verify="verifyPassword" :watch="model.pass1">
     7       <el-input v-model="model.pass2"></el-input>
     8     </el-form-item>
     9   </el-form>
    10 </template>
    11 <script>
    12 export default{
    13   data () {
    14     return {
    15       model: {
    16         pass1: '',
    17         pass2: ''
    18       }
    19     }
    20   },
    21   methods: {
    22     verifyPassword (rule, val, callback) {
    23       if (val !== this.model.pass1) callback(Error('两次输入密码不一致!'))
    24       else callback()
    25     }
    26   }
    27 }
    28 </script>

     自定义校验规则

    开发中如果自带的校验规则满足不了需求,我们通常将在全局自定义校验规则,首先在src目录下新建文件夹,我的文件夹叫verifyRule,文件夹中新建index.js文件,通过模块化导出校验规则。

     1 export default [{
     2     rule: {
     3       name: 'blacklist',
     4     },
     5     ruleMethod: () => ({
     6       validator(rule, val, callback) {
     7         let windowvue = window.vue;
     8         windowvue.$http.post('校验接口',{searchKey: val}).then(function(result){
     9           if(result){
    10             callback(new Error('错误提示信息));
    11           }else{
    12             callback();
    13           }
    14         });
    15       }
    16     })
    17   }
    18 ];

    然后在main.js里遍历添加校验规则

    1 import ElementUIVerify from 'element-ui-verify'
    2 Vue.use(ElementUIVerify)
    3 // node中如果包下无法通过package.json找到main会自动读取包下的index.js文件
    4 import  verifyrules from '@/verifyRule'
    5 
    6 verifyrules.forEach(item => {
    7   ElementUIVerify.addRule(item.rule, item.ruleMethod);
    8 })

    添加之后就可以在项目中通过‘blacklist‘使用自定义的校验规则。

    1 <el-form-item label="身份证号" prop="customerCardNO" verify blacklist ></el-form-item>
  • 相关阅读:
    WYT的刷子
    小烈送菜
    猴腮雷
    基于Docker的Mysql主从复制搭建
    C#集合类型大揭秘
    ASP.NET三剑客 HttpApplication HttpModule HttpHandler 解析
    使用缓存的正确姿势
    【模块化那些事】 拆散的模块化
    分享一个开源的网盘下载工具BaiduPCS-Go
    【抽象那些事】不必要的抽象
  • 原文地址:https://www.cnblogs.com/xiaohong0128/p/10383579.html
Copyright © 2020-2023  润新知