最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Vue中添加手機(jī)驗(yàn)證碼組件功能操作方法

 更新時(shí)間:2017年12月07日 08:40:50   作者:小黑LEI  
組件是Vue.js最強(qiáng)大的功能之一。組件可以擴(kuò)展HTML元素,封裝可重用的代碼。這篇文章主要介紹了VUE 中添加手機(jī)驗(yàn)證碼組件,需要的朋友可以參考下

什么是組件:

組件是Vue.js最強(qiáng)大的功能之一。組件可以擴(kuò)展HTML元素,封裝可重用的代碼。在較高層面上,組件是自定義的元素,Vue.js的編譯器為它添加特殊功能。在有些情況下,組件也可以是原生HTML元素的形式,以is特性擴(kuò)展。

寫在前面:

今天要實(shí)現(xiàn)的功能是在 完善個(gè)人信息頁(yè)面(vue)中添加手機(jī)驗(yàn)證碼組件,當(dāng)用戶點(diǎn)擊 手機(jī)選項(xiàng)時(shí),彈出獲取驗(yàn)證碼組件,完成驗(yàn)證手機(jī)的功能:

這里考慮到功能的復(fù)用,我把當(dāng)前彈出手機(jī)驗(yàn)證碼的操作放在了單獨(dú)的組件中:

<template >
 <div>
  <div class="bind-phone-box">
   <div class="phone-title">綁定手機(jī)</div>
   <div class="phone-content" v-on:click.stop="fillContent">
    <input v-model="phoneNum" class="phone-num" type="text" placeholder="請(qǐng)輸入手機(jī)號(hào)碼">
    <div class="verify-box clearfix">
     <input class="verify-num" v-model="verifyNum" type="text" placeholder="請(qǐng)輸入驗(yàn)證碼"><input v-on:click="sendSmsCode" class="verify-btn" type="button" v-model="btnContent" v-bind="{'disabled':disabled}">
    </div>
   </div>
   <div class="phone-submit clearfix">
    <input class="submit-cancel" type="button" value="取消">
    <input class="submit-confirm" v-on:click.stop="verificationCode" type="button" value="確定">
   </div>
  </div>
 </div>
</template>

并把當(dāng)前組件放在需要使用它的組件中,這里需要注意的是,在控制 綁定手機(jī)組件的顯示和隱藏的時(shí)候,出現(xiàn)了一個(gè)小問(wèn)題:點(diǎn)擊 “手機(jī)” 按鈕需要顯示當(dāng)前組件,但什么時(shí)候去隱藏當(dāng)前的組件呢,我是這樣想的:

  情況1:用戶已經(jīng)輸完了手機(jī)號(hào)并通過(guò)了驗(yàn)證,點(diǎn)擊"確定"按鈕的時(shí)候需要隱藏當(dāng)前組件;

  情況2:用戶沒(méi)有完成手機(jī)驗(yàn)證,但又不想繼續(xù),點(diǎn)擊當(dāng)前手機(jī)的任意位置(除去“確定”按鈕、手機(jī)號(hào)輸入框和 驗(yàn)證碼輸入框)都應(yīng)該隱藏當(dāng)前組件;

基于這兩種情況,我在父組件中給子組件添加了一個(gè)容器:

<li class="mui-table-view-cell phone-li">
   <span v-on:click="verifyPhone" class="mui-navigate-right"><span>手機(jī)號(hào)<span class="necessary">*</span></span></span>
    <!-- 手機(jī)驗(yàn)證碼 -->
  <div class="shade" v-show="verifyShow" v-on:click="verifyPhone">
    <!-- 手機(jī)驗(yàn)證碼子組件 -->
    <phoneVerify></phoneVerify>
   </div>
  </li>

通過(guò)控制 父div 的顯示狀態(tài)來(lái)控制子組件的顯示狀態(tài),

methods:{
  // 手機(jī)號(hào)驗(yàn)證
  verifyPhone(){
   this.verifyShow=!this.verifyShow;
  },
 },

在驗(yàn)證組件中的邏輯控制如下:

<script>
 // 引入彈窗組件
 import { Toast } from 'mint-ui';
 export default {
  data(){
   return {
    phoneNum:"", //手機(jī)號(hào)
    verifyNum:"", //驗(yàn)證碼
    btnContent:"獲取驗(yàn)證碼", //獲取驗(yàn)證碼按鈕內(nèi)文字
    time:0, //發(fā)送驗(yàn)證碼間隔時(shí)間
    disabled:false //按鈕狀態(tài)
   }
  },
  created(){
  },
  methods:{
   // 獲取驗(yàn)證碼
   sendSmsCode(){
    var reg=11&& /^((13|14|15|17|18)[0-9]{1}\d{8})$/;//手機(jī)號(hào)正則驗(yàn)證
    var phoneNum = this.phoneNum;
    if(!phoneNum){//未輸入手機(jī)號(hào)
     Toast("請(qǐng)輸入手機(jī)號(hào)碼");
     return;
    }
    if(!reg.test(phoneNum)){//手機(jī)號(hào)不合法
     Toast("您輸入的手機(jī)號(hào)碼不合法,請(qǐng)重新輸入");
    }
    this.time = 60;
    this.timer();
    // 獲取驗(yàn)證碼請(qǐng)求
    var url = 'http://bosstan.asuscomm.com/api/common/sendSmsCode';
    this.$http.post(url,{username:phoneNum},{emulateJSON:true}).then((response)=>{
     console.log(response.body);
    });
   },
   timer(){
    if(this.time>0){
     this.time--;
     this.btnContent = this.time+"s后重新獲取";
     this.disabled = true;
     var timer = setTimeout(this.timer,1000);
    }else if(this.time == 0){
     this.btnContent = "獲取驗(yàn)證碼";
     clearTimeout(timer);
     this.disabled = false;
    }
   },
   // 驗(yàn)證驗(yàn)證碼
   verificationCode(){
    var phoneNum = this.phoneNum;//手機(jī)號(hào)
    var verifyNum = this.verifyNum;//驗(yàn)證碼
    var url = 'http://bosstan.asuscomm.com/api/common/verificationCode';
    this.$http.post(url,{
     username:phoneNum,
     code:verifyNum
    },{
     emulateJSON:true
    }).then((response)=>{
     console.log(response.body);
    });
   },
   fillContent(){
    // console.log("fillContent");
   }
  }
 }
</script>

其中,獲取驗(yàn)證碼和驗(yàn)證短信驗(yàn)證碼的邏輯還沒(méi)有寫入。

PS:下面給大家補(bǔ)充一段vue短信驗(yàn)證碼組件實(shí)例代碼:

Vue.component('timerBtn',{
  template: '<button v-on:click="run" :disabled="disabled || time > 0">{{ text }}</button>',
  props: {
    second: {
      type: Number,
      default: 60
    },
    disabled: {
      type: Boolean,
      default: false
    }
  },
  data:function () {
    return {
      time: 0
    }
  },
  methods: {
    run: function () {
      this.$emit('run');
    },
    start: function(){
      this.time = this.second;
      this.timer();
    },
    stop: function(){
      this.time = 0;
      this.disabled = false;
    },
    setDisabled: function(val){
      this.disabled = val;
    },
    timer: function () {
      if (this.time > 0) {
        this.time--;
        setTimeout(this.timer, 1000);
      }else{
        this.disabled = false;
      }
    }
  },
  computed: {
    text: function () {
      return this.time > 0 ? this.time + 's 后重獲取' : '獲取驗(yàn)證碼';
    }
  }
});
<timer-btn ref="timerbtn" class="btn btn-default" v-on:run="sendCode" ></timer-btn>
var vm = new Vue({
  el:'#app',
  methods:{
    sendCode:function(){
      vm.$refs.timerbtn.setDisabled(true); //設(shè)置按鈕不可用
      hz.ajaxRequest("sys/sendCode?_"+$.now(),function(data){
        if(data.status){
          vm.$refs.timerbtn.start(); //啟動(dòng)倒計(jì)時(shí)
        }else{
          vm.$refs.timerbtn.stop(); //停止倒計(jì)時(shí)
        }
      });
    },
  }
});

總結(jié)

以上所述是小編給大家介紹的Vue中添加手機(jī)驗(yàn)證碼組件功能操作方法,希望對(duì)大家有所幫助,如果大家有任何疑問(wèn)請(qǐng)給我留言,小編會(huì)及時(shí)回復(fù)大家的。在此也非常感謝大家對(duì)腳本之家網(wǎng)站的支持!

相關(guān)文章

  • Vue利用ref屬性更改css樣式的操作方法

    Vue利用ref屬性更改css樣式的操作方法

    在Vue.js的應(yīng)用開(kāi)發(fā)中,我們經(jīng)常會(huì)遇到需要?jiǎng)討B(tài)修改DOM元素樣式的情況,Vue提供了多種方式來(lái)實(shí)現(xiàn)這一目標(biāo),其中ref是一個(gè)非常有用且靈活的工具,本文將深入探討如何在Vue項(xiàng)目中利用ref屬性來(lái)更改CSS樣式,并通過(guò)多個(gè)實(shí)例演示其具體用法,需要的朋友可以參考下
    2024-10-10
  • vue關(guān)于自定義指令與v-if沖突的問(wèn)題

    vue關(guān)于自定義指令與v-if沖突的問(wèn)題

    這篇文章主要介紹了vue關(guān)于自定義指令與v-if沖突的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-08-08
  • 分享一個(gè)精簡(jiǎn)的vue.js 圖片lazyload插件實(shí)例

    分享一個(gè)精簡(jiǎn)的vue.js 圖片lazyload插件實(shí)例

    本篇文章主要介紹了分享一個(gè)精簡(jiǎn)的vue.js 圖片lazyload插件實(shí)例。非常具有實(shí)用價(jià)值,需要的朋友可以參考下。
    2017-03-03
  • Vue中定義src在img標(biāo)簽使用時(shí)加載不出來(lái)的解決

    Vue中定義src在img標(biāo)簽使用時(shí)加載不出來(lái)的解決

    這篇文章主要介紹了Vue中定義src在img標(biāo)簽使用時(shí)加載不出來(lái)的解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • vue中this.$parent的使用方式

    vue中this.$parent的使用方式

    這篇文章主要介紹了vue中this.$parent的使用方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-03-03
  • vue打包上傳服務(wù)器加載提示錯(cuò)誤Loading chunk {n} failed

    vue打包上傳服務(wù)器加載提示錯(cuò)誤Loading chunk {n} failed

    這篇文章主要為大家介紹了vue打包上傳服務(wù)器加載提示錯(cuò)誤Loading chunk {n} failed解決方法,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2023-08-08
  • Vue項(xiàng)目創(chuàng)建首頁(yè)發(fā)送axios請(qǐng)求的方法實(shí)例

    Vue項(xiàng)目創(chuàng)建首頁(yè)發(fā)送axios請(qǐng)求的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于Vue項(xiàng)目創(chuàng)建首頁(yè)發(fā)送axios請(qǐng)求的相關(guān)資料,文中通過(guò)圖文以及實(shí)例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2023-02-02
  • vue3實(shí)現(xiàn)旋轉(zhuǎn)圖片驗(yàn)證

    vue3實(shí)現(xiàn)旋轉(zhuǎn)圖片驗(yàn)證

    這篇文章主要為大家詳細(xì)介紹了vue3實(shí)現(xiàn)旋轉(zhuǎn)圖片驗(yàn)證,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • 關(guān)于vue里頁(yè)面的緩存詳解

    關(guān)于vue里頁(yè)面的緩存詳解

    今天小編就為大家分享一篇關(guān)于vue里頁(yè)面的緩存詳解,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2019-11-11
  • element ui el-date-picker組件默認(rèn)值方式

    element ui el-date-picker組件默認(rèn)值方式

    這篇文章主要介紹了element ui el-date-picker組件默認(rèn)值方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-12-12

最新評(píng)論

防城港市| 贺州市| 高青县| 四子王旗| 利川市| 遂昌县| 太谷县| 公安县| 铜陵市| 黔东| 双峰县| 泗水县| 高安市| 剑川县| 万年县| 怀柔区| 四平市| 玛沁县| 三台县| 咸阳市| 鄂州市| 健康| 从江县| 灵寿县| 祁门县| 内黄县| 新宁县| 合作市| 友谊县| 灵丘县| 宁城县| 翁牛特旗| 怀来县| 阿尔山市| 板桥市| 娱乐| 若羌县| 涿鹿县| 龙口市| 景泰县| 扎囊县|