详解vue验证器(vue-validator)的使用

详解vue验证器(vue-validator)的使用

官方文档:http://vuejs.github.io/vue-validator/zh-cn/index.html

github项目地址:https://github.com/vuejs/vue-validator

单独使用vue-validator的方法见官方文档,本文结合vue-router使用。

安装验证器

立即学习“前端免费学习笔记(深入)”;

不添加自定义验证器或者无需全局使用的公用验证器,在main.js中安装验证器,使用 CommonJS 模块规范, 需要显式的使用 Vue.use() 安装验证器组件。

import Validator from 'vue-validator'Vue.use(Validator)

登录后复制

与 vue-router 同时使用,必须在调用 router#map, router#start 等实例方法前安装验证。 

若要自定义验证器,建一个js文件,在该文件中安装验证器组件。例如:validation.js

import Vue from 'vue'import Validator from 'vue-validator'Vue.use(Validator)//自定义验证器

登录后复制

自定义验证器

官方提供的api如下

input[type="text"]input[type="radio"]input[type="checkbox"]input[type="number"]input[type="password"]input[type="email"]input[type="tel"]input[type="url"]selecttextarea

登录后复制

但是以上的不一定满足我们的需求,这时就需要用到另一个全局api,用于注册和获取全局验证器。

Vue.validator( id, [definition] )

登录后复制

示例  定义validation.js  内容如下

import Vue from 'vue'import Validator from 'vue-validator'Vue.use(Validator)//自定义验证器//添加一个简单的手机号验证 //匹配0-9之间的数字,并且长度是11位Vue.validator('tel', function (val) {  return /^[0-9]{11}$/.test(val)});//添加一个密码验证//匹配6-20位的任何字类字符,包括下划线。与“[A-Za-z0-9_]”等效。Vue.validator('passw', function (val) {  return /^(\w){6,20}$/.test(val)});

登录后复制

使用验证器

验证器语法

      
   不得少于3个字符   不得大于15个字符    
 

登录后复制

默认情况下,vue-validator 会根据 validator 和 v-validate 指令自动进行验证。然而有时候我们需要关闭自动验证,在有需要时手动触发验证。如果你不需要自动验证,可以通过 initial 属性或 v-validate 验证规则来关闭自动验证。

如下:

    
 不得少于3个字符 不得大于15个字符     

登录后复制

Terminal 指令问题

      //若是在main.js中导入  无需再次导入//此处导入的是上面代码的validation.jsimport validator from '../validator/validation'export default{    data(){        return{            comment:'',            passw:'',            passw2:''        }    },    methods:{        passwInvalid(){            alert('只能输入6-20个字母、数字、下划线');        },        passwok(){            //alert('验证码符合规范')        }    }}

登录后复制

 示例:用户注册验证

用了一个组件来显示提示信息

toast.vue

    
        {{toasttext}}    
export default{ props:{ //是否显示提示 toastshow:{ type:Boolean, required: false, default:function(){ return false; } }, //提示的内容 toasttext:{ type:String, required: false, default:function(){ return 'no message'; } }, //显示的时间 duration: { type: Number, default:3000,//默认3秒 required:false } }, ready() { }, watch:{ toastshow(val){ if (this._timeout) clearTimeout(this._timeout) if (val && !!this.duration) { this._timeout = setTimeout(()=> this.toastshow = false, this.duration) } } }} .toast{ position:absolute; left:50%; margin-left:-25%; bottom:30px; display:block; width:200px; height:auto; text-align:center; color:white; background-color:rgba(0,0,0,0.5); border-radius:10px; z-index:10; transform:scale(1); padding:5px; } .toast-transition{ transition: all .3s ease; } .toast-enter{ opacity:0; transform:scale(0.1); } .toast-leave{ opacity:0; transform:scale(0.1); }

登录后复制

注册用户:假如我们需要填写手机号和输入两次密码

   
             
    
       
    
                 
            
                     
    下一步        
            
//导入validation.js 此处的validation.js就是上文中validation.js的内容import validator from '../validator/validation';//导入显示提示信息的组件import Toast from '../components/toast.vue';export default{ components: { //注册组件 Toast }, data(){ return{ telphone:'',//电话号码 toastshow:false,//默认不现实提示信息 toasttext:'',//提示信息内容 passw1:'',//首次输入密码 passw2:''//再次输入密码 } }, methods:{ //手机号验证失败时执行的方法 telonInvalid(){ //设置提示信息内容 this.$set('toasttext','手机不正确'); //显示提示信息组件 this.$set('toastshow',true); }, //密码验证失败时执行的方法 passwInvalid(){ this.$set('toasttext','只能输入6-20个字母、数字、下划线'); this.$set('toastshow',true); }, register_user(){ var that = this; var telephones = that.$get('telphone'); var pw1 = that.$get('passw1'); var pw2 = that.$get('passw2') that.$validate(true, function () { if (that.$validation_register1.invalid) { //验证无效 that.$set('toasttext','请完善表单'); that.$set('toastshow',true); }else{ that.$set('toasttext','验证通过'); that.$set('toastshow',true); //验证通过做注册请求 /*that.$http.post('http://192.168.30.235:9999/rest/user/register', 'account':telephones,'pwd':pw1,'pwd2':pw2}).then(function(data){ if(data.data.code == '0'){ that.$set('toasttext','注册成功'); that.$set('toastshow',true); }else{ that.$set('toasttext','注册失败'); that.$set('toastshow',true); } },function(error){ //显示返回的错误信息 that.$set('toasttext',String(error.status)); that.$set('toastshow',true); })*/ } }) } }}.register-box{ padding: 10px;}.pd05{ margin-top: 5px;}.greenBtn{ width: 173px; height: 30px; text-align: center; line-height: 30px; background: red; color: #fff; margin-top: 5px;}

登录后复制

若点击下一步,会提示“请完善表单”,因为验证不通过;若是文本框获得焦点后失去焦点则会提示相应的错误信息;若内容填写正确,则会提示验证通过并发送相应的请求。

效果如图

1.png

相关推荐:2020年前端vue面试题大汇总(附答案)vue教程推荐:2020最新的5个vue.js视频教程精选

更多编程相关知识,请访问:编程入门!!

以上就是详解vue验证器(vue-validator)的使用的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/3145199.html

(0)
上一篇 2025年3月30日 07:49:24
下一篇 2025年3月30日 07:49:33

AD推荐 黄金广告位招租... 更多推荐

相关推荐

  • vue+axios+php如何实现上传文件功能?

    推荐:《PHP视频教程》 我们在做表单提交的时候,往往会碰到一些表单提交的需求,那vue的axios与上传文件碰撞后不会出现什么不一样的火花吗,听我一一道来: 首先,我们需要对写一个vue的axios的表单提交,由于本人用的是webpack…

    2025年3月30日 编程技术
    100
  • vue-cli+express获取mongodb数据的方法介绍

    下面vue.js教程栏目给大家介绍一下使用vue-cli结合express获取mongodb里数据的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 最近一直在看node有关的内容,空闲时间做了一个小小的爬虫,用于爬取…

    2025年3月30日 编程技术
    100
  • vue路由守卫哪几种?

    vue路由守卫有三种,分别为:1、全局守卫“router.beforeEach”;2、组件内的守卫“beforeRouteEnter”;3、路由独享守卫“beforeEnter”。 vue中路由守卫一共有三种,一个全局路由守卫,一个是组件内…

    2025年3月30日
    100
  • 浅谈vue中引入jquery的方法

    下面vue.js栏目给大家介绍一下vue中引入jquery的方法。有一定的参考价值,有需要的朋友可以参考一下,希望对大家有所帮助。 vue中引入jquery的方法 1:因为已经安装了vue脚手架,所以需要在webpack中全局引入jquer…

    2025年3月30日
    100
  • vue中怎么导出excel文件?

    今天再开发中遇到一件事情,就是怎样用已有数据导出excel文件,网上有许多方法,有说用数据流的方式,https://www.cnblogs.com/yeqrblog/p/9758981.html,但是现在我的想法是只是用数组数据,不接著与数…

    2025年3月30日
    100
  • vue脚手架如何导入jquery第三方插件

    vue脚手架导入jquery第三方插件的方法:1、下载jquery;2、编辑webpack.base.conf.js文件,引入webpack,并配置jquery插件;3、在入口文件中输入【import $ from ‘jquer…

    2025年3月30日
    100
  • 怎么在vue.js插图片

    vue.js插图片的方法:首先给图片地址绑定变量;然后在script中设置变量;最后通过require方法将图片引入为模块或者将imgUrl放在数据里即可。 本教程操作环境:windows7系统、vue2.0版本、thinkpad t480…

    2025年3月30日
    100
  • vue.js能做轮播图吗

    vue.js能做轮播图,其实现方法:首先写出整体的框架;然后根据imgArray照片的数组渲染小圆点的数量;接着将span绑定on为小圆点点亮的状态;最后通过自定义变量ifshow来显示图片的显示隐藏,并设置nowindex来控制轮播即可。…

    2025年3月30日
    100
  • vue.js能用echarts么

    vue.js能用echarts,具体操作方法:1、在控制台中输入“npm install echarts –save”命令安装echarts依赖;2、在main.js中进行全局引入,就可以使用echarts创建图表。 本教程操作…

    2025年3月30日 编程技术
    100
  • vue怎么调用jquery包

    vue调用jquery包的方法:首先引用jQuery包,并进入项目文件夹;然后安装jQuery包,找到脚手架build文件夹下添加相关代码;最后引用jquery,并在弹窗显示即可。 本教程操作环境:windows7系统、jquery3.2.…

    2025年3月30日 编程技术
    100

发表回复

登录后才能评论