首页

文章

vue-element的表单验证能调用methods里的方法吗?

发布网友 发布时间:2022-04-19 19:50

我来回答

4个回答

懂视网 时间:2022-04-22 21:09

这篇文章主要介绍了关于Vue中Element表单验证的基本要素,有着一定的参考价值,现在分享给大家,有需要的朋友可以参考一下

Element主要使用了async-validator这个库作为表单验证

async-validator主要分成三部分

  • Validate

  • Options

  • Rules

  • 其中,对于我们使用Element的来说,Rules最重要,也是这部分内容较多的。

    async-validator各部分

    async-validator基本使用

    import Validator from 'async-validator'
    
    // 规则的描述
    const rules = {
     name: { type: 'string', required: true }
    }
    
    // 根据规则生成验证器
    const validator = new Validator(rules)
    
    // 要验证的数据源
    const source = {
     name: 'LanTuoXie'
    }
    
    // 验证后的回调函数
    function callback (errors, fileds) {
     if (errors) {
     // 验证不通过,errors是一个数组,记录那些不通过的错误信息
     // fileds是所有数据源的字段名,也即上面的source的'name'
     // 验证是根据字段名来的,rules.name 对应 source.name。 字段名要一样才会验证
     }
     // 下面是验证通过的逻辑
    }
    
    // 验证数据源是否符合规则
    validator.validate(source, callback)

    Validate

    就是上面例子中的validator.validate,是一个函数

    function(source, [options], callback)

    source和callback对应上面的例子。

    Options

    Options有两个值

  • first: 一个布尔值,如果出现字段不通过,终止验证后面的字段

  • firstFields: 布尔值或者字符串,如果验证一个字段时,一个规则不通过,终止验证下个规则(一个字段,多个规则的情况)

  • firstFields是针对单个字段多规则的情况下使用,而first是针对所有字段

    Rules

    最重要的还是Rules。定义rule可以有三种形式,但是rules字段名一定要和数据源source的字段名一致。

  • 函数的方式:{ name(rule, value, callback, source, options) {} }

  • 对象的方式: { name: { type: 'string', required: true } }

  • 数组的方式: { name: [{ type: 'string' }, { required: true }] }

  • 上面可以看到,字段名name可以有3种方式定义规则,在使用Element的时候还是推荐对象和数组的方式,这个两个比较简单,函数看情况使用。

    除了typerequired还有哪些用法可以用以及有什么用?

    Rules的默认规则

  • type: 要被验证的数据的类型如urlnumber

  • required: 是否必填

  • pattern:使用正则来验证

  • min: 数据的长度的最小值 (数据类型必须是stringarray)

  • max: 数据的长度的最大值 (数据类型必须是stringarray)

  • len: 数据的长度必须等于这个值 (数据类型必须是stringarray)

  • enum: 数据的值必须等于这个枚举数组某个元素 { enum: [1, 2, 3] }

  • transform: 一个钩子函数,在开始验证之前可以对数据先处理后验证,如吧number转为string后再验证

  • message: 报错的提示信息可以是字符串也可以是jsx标签<span>Name is required</span>

  • validator: 自定义验证函数以及报错信息 validator(rule, value, callback)

  • 还有一个Deep Rules是处理object或者array类型的,使用了fieldsdefaultField

  • fields:Deep Rules的时候使用,定义下一层的字段名以及规则

  • defaultField: Deep Rules的时候使用,所有下一层的字段都会采用该规则,可以被fields替换

  • 默认的Type

  • string:必须是String类型,规则不设置type默认是这个

  • number:必须是Number类型,如果后台返回的数据是字符串,可以用transform转为Number类型,字符串类型的数字('12')不会通过,要注意

  • boolean: 必须是Boolean类型

  • method: 必须是Function

  • regexp:必须是正则RegExp

  • integer:是Number类型的正整数

  • float: 是Number类型的浮点数

  • array: 是Array.isArray通过的数组

  • object: Array.isArray不通过的Object类型

  • enum: 要先定义enum,然后值必须是enum某个值

  • date: 必须是Date对象的实例

  • url: String类型且符合链接格式

  • hex

  • email: String类型,且符合邮箱格式

  • Deep Rules使用demo

    cosnt urls = ['http://www.baidu.com', 'http://www.baidu.com']
    // 一个urls的数组,
    const rules = {
     urls: {
     type: 'array',
     required: true,
     defaultField: { type: 'url' }
     }
    }
    const ids = {
     name: 'LanTuoXie',
     age: 12,
     spc: '帅'
    }
    
    const rules = {
     ids: {
     type: 'object',
     required: true,
     fields: {
     name: { type: 'string', required: true },
     age: { type: 'number', required: true, tranform: Number },
     spc: { type: 'string', required: true }
     }
     }
    }

    自定义验证validator

    validator(rule, value, callback)

  • rule: 记录了验证字段的字段名以及规则的信息

  • value: 要验证的值

  • callback: 如果callback()代表验证通过,如果callback(new Error('错误要提示的信息'))代表验证不通过

  • // 验证是[min, max]范围内的正整数
    const betweenInt = (min, max) => (rule, v, cb) => {
     const isBetween = v >= min && v <= max
     const isInt = /^[0-9]+$/.test(v)
     if (isBetween && isInt) return cb()
    
     return cb(new Error(`要求是在${min}到${max}的正整数 [${min}, ${max}]`))
    }
    
    const rules = {
     num: { validator: betweenInt(1, 5), required: true }
    }

    热心网友 时间:2022-04-22 18:17

    可以的,用this调用就行

    热心网友 时间:2022-04-22 19:35

    可以拿到this

    热心网友 时间:2022-04-22 21:10

    可以。
    和vue的用法一样的,如果不是回调函数,可以直接使用this调用methods里面的方法。
    如果调用不成功,可以检查当前的this指向。
    历史要怎么读,有啥诀窍 高中历史诀窍 年终会活动策划方案 深度解析:第一财经回放,探索财经新风向 逆水寒手游庄园怎么邀请好友同住 逆水寒手游 逆水寒不同区可以一起组队吗? 逆水寒手游 逆水寒怎么进入好友世界? 逆水寒手游 逆水寒怎么去别人的庄园? 使用puppeteer实现将htmll转成pdf 内卷时代下的前端技术-使用JavaScript在浏览器中生成PDF文档 【译】将HTML转为PDF的几种实现方案 变形金刚08动画怎么样 变形金刚08动画的问题 变形金刚08动画日语版剧情介绍 高分!换显卡nvidia控制面板被我卸了,重新安装显卡驱动后没了nvidia控... 我的nvidia控制面板被卸载了 怎么找回啊 卸载后 这个画面看着很奇怪_百 ... 李卓彬工作简历 林少明工作简历 广东工业职业技术学院怎么样 郑德涛任职简历 唐新桂个人简历 土地入股的定义 ups快递客服电话24小时 贷款记录在征信保留几年? 安徽徽商城有限公司公司简介 安徽省徽商集团新能源股份有限公司基本情况 安徽省徽商集团有限公司经营理念 2019哈尔滨煤气费怎么有税? 快手删除的作品如何恢复 体育理念体育理念 有关体育的格言和理念 什么是体育理念 万里挑一算彩礼还是见面礼 绿萝扦插多少天后发芽 绿萝扦插多久发芽 扦插绿萝多久发芽 炖牛排骨的做法和配料 网络诈骗定罪标准揭秘 “流水不争先”是什么意思? mc中钻石装备怎么做 为什么我的MC里的钻石块是这样的?我想要那种。是不是版本的问题?如果是... 带“偷儿”的诗句 “君不见巴丘古城如培塿”的出处是哪里 带“奈何”的诗句大全(229句) 里翁行()拼音版、注音及读音 带“不虑”的诗句 “鲁肃当年万人守”的出处是哪里 无尘防尘棚 进出口报关流程,越详细越好。谢谢大家指教。 双线桥不是看化合价升多少就标多少的吗?为什么CL2+2KI=2KCL+I2中I失... 如何利用Vue.js库实现表单校验 有人请求共享照片,不小心接受了,我的是苹果手机,... 双瞳为什么杀老外 哪位大神有2001年香港陈国富执导,梁家辉、刘若英... 普法栏目剧 古镇奇谭·双瞳的演员表 如何评价双瞳?剧情有什么出彩的地方? 双瞳的另一个结局 双瞳的带字幕的资源 求双瞳完整版电影 双瞳老外是被谁杀的 找<双瞳>这部电影 《双瞳》的真仙观案件原型是什么? 电影“双瞳”里讲的空调里有些什么? 大家都来评评吧粱家辉和刘若英主演的恐怖片电影《... 电影《双瞳》的导演 演员??? 谁能免费分享一下电影《双瞳》完整版113分钟的百度... 电影《双瞳》到底讲了个什么样的故事? 双瞳电影到底讲了什么 电影双瞳的演员表及扮演双瞳的女孩的名字 Xbox和北通一起 双人手柄Xinput设置 vue表单验证怎么判断单条格式错误 在vuecli中用vuex写一个验证是否为空的表单,点击... 用vue + element-ui在表单验证的时候怎么调用后台... vue validator怎么验证表单不能为空 vue elementui el-form rules动态验证的实例代码详解 用vue + element-ui 表单验证的时候怎么调用后台接... vue 表单验证的时候,为什么我的每个绑定的都需要... 怎样利用Vue动态生成form表单 vue 表单验证和angular表单验证哪个好 vue.js怎么添加密码框验证 Vue+Element-UI怎么在验证用户名的时候判断用户名... vue 表单之通过v-model绑定单选按钮radio vue实时监听多个表单数据是否有值 在vue中如何动态绑定表单元素的属性 当一个表单提交后才能显示另一个按钮怎么用vue实现 如何通过vue定时提交隐藏的form表单 懒人红豆早餐薄饼的做法步骤图,怎么做好吃 红豆白面还有鸡蛋加在一起可以做鸡蛋饼吗 红豆饼最简单的做法是怎样的? 如何制作外酥里嫩的红豆煎饼?
    声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com