Vue Validator(vue-validator) 사용에 대한 자세한 설명

青灯夜游
풀어 주다: 2020-11-05 17:57:09
앞으로
4960명이 탐색했습니다.

Vue Validator(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에 검증기를 설치하고 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)
//自定义验证器
로그인 후 복사

Custom 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"]
select
textarea
로그인 후 복사

그러나 위의 내용은 우리의 요구 사항을 충족하지 못할 수 있습니다. 글로벌 유효성 검사기.

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)
});
로그인 후 복사

validator 사용

Validator 구문

<validator name="validation">
  <input type="text" v-model=&#39;comment&#39; id=&#39;comment&#39;
  v-validate:comment="{ minlength: 3, maxlength: 15 }">
    <div>
   <span v-show="$validation.comment.minlength">不得少于3个字符</span>
   <span v-show="$validation.comment.maxlength">不得大于15个字符</span>
    </div>
 </validator>
로그인 후 복사

기본적으로 vue-validator는 validator 및 v-validate 지시문을 기반으로 자동으로 확인합니다. 그러나 자동 확인을 끄고 필요한 경우 수동으로 확인을 실행해야 하는 경우도 있습니다. 자동 유효성 검사가 필요하지 않은 경우 초기 속성 또는 v-validate 유효성 검사 규칙을 통해 자동 유효성 검사를 해제할 수 있습니다.

다음과 같습니다:

<validator name="validation">
  <input type="text" v-model=&#39;comment&#39; id=&#39;comment&#39; 
  v-validate:comment="{ minlength: 3, maxlength: 15 }"  
  detect-change="off" initial=&#39;off&#39;>
  <div>
 <span v-show="$validation.comment.minlength">不得少于3个字符</span>
 <span v-show="$validation.comment.maxlength">不得大于15个字符</span>
     </div>
</validator>
로그인 후 복사

터미널 명령 문제

<validator name="test_validator">
  <!-- @invalid:valid的逆 ,表示验证不通过 -->
  <input  @invalid="passwInvalid" @valid="passwok" 
  type="password" v-model=&#39;passw&#39; id=&#39;passw&#39; v-validate:passw="[&#39;passw&#39;]"  
  detect-change="off" initial=&#39;off&#39; placeholder=&#39;请输入密码&#39;>
  <input  @invalid="passwInvalid" @valid="passwok" 
  type="password" v-model=&#39;passw2&#39; id=&#39;passw2&#39; v-validate:passw2="[&#39;passw&#39;]"  
  detect-change="off" initial=&#39;off&#39; placeholder=&#39;请输入密码&#39;>
</validator>
<script>
//若是在main.js中导入  无需再次导入
//此处导入的是上面代码的validation.js
import validator from &#39;../validator/validation&#39;
export default{
    data(){
        return{
            comment:&#39;&#39;,
            passw:&#39;&#39;,
            passw2:&#39;&#39;
        }
    },
    methods:{
        passwInvalid(){
            alert(&#39;只能输入6-20个字母、数字、下划线&#39;);
        },
        passwok(){
            //alert(&#39;验证码符合规范&#39;)
        }
    }
}
</script>
로그인 후 복사

예: 사용자 등록 확인

컴포넌트를 사용하여 프롬프트 정보를 표시합니다.

toast.vue

<template>
    <div v-show="toastshow" transition="toast" 
    class="toast font-normal">
        {{toasttext}}
    </div>
</template>
<script>
export default{
    props:{
        //是否显示提示
        toastshow:{
            type:Boolean,
              required: false,
            default:function(){
                return false;
            }
        },
      //提示的内容
      toasttext:{
           type:String,
          required: false,
          default:function(){
              return &#39;no message&#39;;
           }
        },
        //显示的时间
        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)
            }
        }
    }
}
</script>
<style>
    .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);
    }
</style>
로그인 후 복사

등록된 사용자: 휴대폰 번호와 비밀번호를 두 번 입력하세요

<template>
   <div class=&#39;register-box&#39;>
   <!-- 组件:用于显示提示信息 -->
   <Toast :toastshow.sync="toastshow" :toasttext="toasttext"></Toast>
   <validator name="validation_register1">
    <div class=&#39;register1&#39;>
    <div class=&#39;pd05&#39;>
   <input @invalid="telonInvalid" initial="off" 
   detect-change="off" v-model="telphone" id="telphone" type="tel" 
   class=&#39;phone-number&#39; v-validate:telphone="[&#39;tel&#39;]"  
   placeholder=&#39;请输入手机号码&#39;>
    </div>
    <div class=&#39;pd05&#39;>
     <input @invalid="passwInvalid" v-model="passw1" initial="off"  
     detect-change="off" id="passw1" type="password" 
     v-validate:passw1="[&#39;passw&#39;]"class=&#39;password-number&#39;placeholder=&#39;请输入密码&#39;>
            </div>
            <div class=&#39;pd05&#39;>
            <input @invalid="passwInvalid" v-model="passw2" 
           initial="off" detect-change="off" id="passw2" type="password"
          v-validate:passw2="[&#39;passw&#39;]" class=&#39;password-number&#39; 
             placeholder=&#39;请输入密码&#39;>
         </div>
    <a class=&#39;greenBtn&#39; v-on:click=&#39;register_user()&#39;>下一步</a>
        </div>
        </validator>
    </div>
</template>
<script>
//导入validation.js  此处的validation.js就是上文中validation.js的内容
import validator from &#39;../validator/validation&#39;;
//导入显示提示信息的组件
import Toast from &#39;../components/toast.vue&#39;;
export default{    
    components: {
        //注册组件
          Toast
      },
    data(){
        return{
            telphone:&#39;&#39;,//电话号码
            toastshow:false,//默认不现实提示信息
            toasttext:&#39;&#39;,//提示信息内容
            passw1:&#39;&#39;,//首次输入密码
            passw2:&#39;&#39;//再次输入密码
        }
    },
    methods:{
        //手机号验证失败时执行的方法
        telonInvalid(){
            //设置提示信息内容
            this.$set(&#39;toasttext&#39;,&#39;手机不正确&#39;);
            //显示提示信息组件
            this.$set(&#39;toastshow&#39;,true);
        },
        //密码验证失败时执行的方法
        passwInvalid(){
          this.$set(&#39;toasttext&#39;,&#39;只能输入6-20个字母、数字、下划线&#39;);
          this.$set(&#39;toastshow&#39;,true);
        },    
        register_user(){
            var that = this;
            var telephones = that.$get(&#39;telphone&#39;);
            var pw1 = that.$get(&#39;passw1&#39;);
            var pw2 = that.$get(&#39;passw2&#39;)  
            that.$validate(true, function () {            
                if (that.$validation_register1.invalid) {
                    //验证无效
                      that.$set(&#39;toasttext&#39;,&#39;请完善表单&#39;);
                     that.$set(&#39;toastshow&#39;,true);
                }else{
       that.$set(&#39;toasttext&#39;,&#39;验证通过&#39;);
       that.$set(&#39;toastshow&#39;,true);
       //验证通过做注册请求
       /*that.$http.post(&#39;http://192.168.30.235:9999/rest/user/register&#39;,
       &#39;account&#39;:telephones,&#39;pwd&#39;:pw1,&#39;pwd2&#39;:pw2}).then(function(data){
       if(data.data.code == &#39;0&#39;){
         that.$set(&#39;toasttext&#39;,&#39;注册成功&#39;);
           that.$set(&#39;toastshow&#39;,true);
           }else{
              that.$set(&#39;toasttext&#39;,&#39;注册失败&#39;);
             that.$set(&#39;toastshow&#39;,true);
                      }
             },function(error){
               //显示返回的错误信息
              that.$set(&#39;toasttext&#39;,String(error.status));
                 that.$set(&#39;toastshow&#39;,true);
                    })*/
                }
            })
            
        }
    }
}
</script>
<style>
.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;
}
</style>
로그인 후 복사

다음을 클릭하면 확인이 실패하기 때문에 "양식을 작성해 주세요"라는 메시지가 표시됩니다. 내용이 올바르게 입력되면 확인 메시지가 표시됩니다. 전달하고 적절한 요청을 보냅니다.

효과는 사진과 같습니다

Vue Validator(vue-validator) 사용에 대한 자세한 설명

관련 추천 :

2020 프론트엔드 vue 면접 질문 요약 (답변 포함)

vue 튜토리얼 추천 : 2020 최신 5 vue.js 영상 튜토리얼 선택

더 많은 프로그래밍 관련 지식을 보려면 프로그래밍 소개를 방문하세요! !

위 내용은 Vue Validator(vue-validator) 사용에 대한 자세한 설명의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

관련 라벨:
vue
원천:cnblogs.com
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿