vee-validate的使用

2,538 阅读1分钟
下载 npm i vee-validate@2.2.13

配置 vee-validate

//引入vue
    import Vue from 'vue';
//引入 vee-validate
    import VeeValidate from 'vee-validate';
//引入zh-CN
    import zh_CN from 'vee-validate/dist/locale/zh_CN'
//声明使用
    Vue.use(VeeValidate)
//js使用方式,指定语言、修改默认提示,添加自定义验证
VeeValidate.Validator.localize('zh_CN',{  
    // 设置了这个之后提示信息会变成中文的 
     messages:zh_CN.messages,  
    // 属性的提示信息    
     attributes:{    phone:'手机号码'  }
});
//自定义的扩展方法
VeeValidate.Validator.extend('phone2',{ 
    // field 会拿到上面的那个phone的值 
     getMessage:(field)=>'请输入正确的'+field, 
     validate:(value)=>{  
      //正则   
     return /[1]\d{10}/.test(value);  }  
});

使用:

<input type="tel" maxlength="11" placeholder="手机号" 
       v-model="phone" name="phone" v-validate="'required|phone2'"/>
<span v-show="errors.has('phone')" style="color: red;font-size: 12px;">
        {{ errors.first('phone') }}
</span>
<!-- 如果输入了正确的手机号  则这个按钮变亮   并且中间的内容变成已发送 --> 
<button :disabled="!isRight||times>0" class="get_verification" :class="{isblack:isRight}" 
        @click.prevent="sendCode">     {{times>0?'已发送'+`${times}`+'s':'获取验证码'}} </button>

export default{
data(){
    return {
        phone : '',
        times:0,
    }
},
  computed:{    //获取到当期输入的手机号 this.phone   进行校验   返回一个布尔值    isRight(){      return /[1]\d{10}/.test(this.phone);    },  },
  methods:{    //输入手机号发送验证码    sendCode(){      //倒计时的时间  把它放到this实例上  上面好获取到当前的这个times      this.times = 30;      this.timeId = setInterval(()=>{        this.times--;        if(this.times <=0 ){          this.times = 0;          clearInterval(this.timeId)        }      },1000)    }  } }

}

效果