vue 中添加手機驗證碼組件

来源:http://www.cnblogs.com/blackin/archive/2017/12/06/7993868.html
-Advertisement-
Play Games

寫在前面: 今天要實現的功能是在 完善個人信息頁面(vue)中添加手機驗證碼組件,當用戶點擊 手機選項時,彈出獲取驗證碼組件,完成驗證手機的功能: 這裡考慮到功能的復用,我把當前彈出手機驗證碼的操作放在了單獨的組件中: 並把當前組件放在需要使用它的組件中,這裡需要註意的是,在控制 綁定手機組件的顯示 ...


寫在前面: 今天要實現的功能是在 完善個人信息頁面(vue)中添加手機驗證碼組件,當用戶點擊 手機選項時,彈出獲取驗證碼組件,完成驗證手機的功能:

這裡考慮到功能的復用,我把當前彈出手機驗證碼的操作放在了單獨的組件中:

 1 <template >
 2     <div>
 3         <div class="bind-phone-box">
 4             <div class="phone-title">綁定手機</div>
 5             <div class="phone-content" v-on:click.stop="fillContent">
 6                 <input v-model="phoneNum" class="phone-num" type="text" placeholder="請輸入手機號碼">
 7                 <div class="verify-box clearfix">
 8                     <input class="verify-num" v-model="verifyNum" type="text" placeholder="請輸入驗證碼"><input v-on:click="sendSmsCode" class="verify-btn" type="button" v-model="btnContent" v-bind="{'disabled':disabled}">
 9                 </div>
10             </div>
11             <div class="phone-submit clearfix">
12                 <input class="submit-cancel" type="button" value="取消">
13                 <input class="submit-confirm" v-on:click.stop="verificationCode" type="button" value="確定">
14             </div>
15         </div>
16     </div>
17 </template>

並把當前組件放在需要使用它的組件中,這裡需要註意的是,在控制 綁定手機組件的顯示和隱藏的時候,出現了一個小問題:點擊 “手機” 按鈕需要顯示當前組件,但什麼時候去隱藏當前的組件呢,我是這樣想的:

  情況1:用戶已經輸完了手機號並通過了驗證,點擊"確定"按鈕的時候需要隱藏當前組件;

  情況2:用戶沒有完成手機驗證,但又不想繼續,點擊當前手機的任意位置(除去“確定”按鈕、手機號輸入框和 驗證碼輸入框)都應該隱藏當前組件;

基於這兩種情況,我在父組件中給子組件添加了一個容器:

1     <li class="mui-table-view-cell phone-li">
2       <span v-on:click="verifyPhone" class="mui-navigate-right"><span>手機號<span class="necessary">*</span></span></span>
3       <!-- 手機驗證碼 -->
4         <div class="shade" v-show="verifyShow" v-on:click="verifyPhone">
5              <!-- 手機驗證碼子組件 -->
6               <phoneVerify></phoneVerify>
7          </div>
8   </li>

通過控制 父div 的顯示狀態來控制子組件的顯示狀態,

1     methods:{
2        // 手機號驗證
3        verifyPhone(){
4           this.verifyShow=!this.verifyShow;
5        },
6    },

在驗證組件中的邏輯控制如下:

  

 1 <script>
 2     // 引入彈窗組件
 3     import { Toast } from 'mint-ui';
 4     export default {
 5         data(){
 6             return {
 7                 phoneNum:"", //手機號
 8                 verifyNum:"", //驗證碼
 9                 btnContent:"獲取驗證碼", //獲取驗證碼按鈕內文字
10                 time:0, //發送驗證碼間隔時間
11                 disabled:false //按鈕狀態
12             }
13         },
14         created(){
15 
16         },
17         methods:{
18             // 獲取驗證碼
19             sendSmsCode(){
20                 var reg=11&& /^((13|14|15|17|18)[0-9]{1}\d{8})$/;//手機號正則驗證
21                 var phoneNum = this.phoneNum;
22                 if(!phoneNum){//未輸入手機號
23                     Toast("請輸入手機號碼");
24                     return;
25                 }
26                 if(!reg.test(phoneNum)){//手機號不合法
27                     Toast("您輸入的手機號碼不合法,請重新輸入");
28                 }
29                 this.time = 60;
30                 this.timer();
31 
32                 // 獲取驗證碼請求
33                 var url = 'http://bosstan.asuscomm.com/api/common/sendSmsCode';
34                 this.$http.post(url,{username:phoneNum},{emulateJSON:true}).then((response)=>{
35                     console.log(response.body);
36                 });
37 
38             },
39             timer(){
40                 if(this.time>0){
41                     this.time--;
42                     this.btnContent = this.time+"s後重新獲取";
43                     this.disabled = true;
44                     var timer = setTimeout(this.timer,1000);
45                 }else if(this.time == 0){
46                     this.btnContent = "獲取驗證碼";
47                     clearTimeout(timer);
48                     this.disabled = false;
49                 }
50             },
51             // 驗證驗證碼
52             verificationCode(){
53                 var phoneNum = this.phoneNum;//手機號
54                 var verifyNum = this.verifyNum;//驗證碼
55 
56                 var  url = 'http://bosstan.asuscomm.com/api/common/verificationCode';
57                 this.$http.post(url,{
58                     username:phoneNum,
59                     code:verifyNum
60                 },{
61                     emulateJSON:true
62                 }).then((response)=>{
63                     console.log(response.body);
64                 });
65             },
66             fillContent(){
67                 // console.log("fillContent");
68             }
69         }
70     }
71 </script>

其中,獲取驗證碼和驗證簡訊驗證碼的邏輯還沒有寫入

  


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • android studio報下圖中的這個錯誤的解決辦法: 解決辦法: 1、刪除掉下圖中標記的2個文件夾 2、將下圖標記的文件的文件名重命名,把最後的尾碼.lock去掉,因為加上了這個尾碼,所以提示找不到cache.properties 這個文件 3、點擊try again即可解決 ...
  • 當知道要上傳的視頻資料從20條變成100條時,我就明白,絕對不能再人工處理了。他們總是想當然的認為,錄入一條數據需要1分鐘,那錄入20條數據就是20分鐘,錄入100條數據,不就是100分鐘嗎?我有時候,真的很想問問他們,沒有考慮過人是會犯錯的嗎?數據越多,出錯的可能就越大;但是數據本身,又是不允許出... ...
  • 參考文檔: https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Operators/super 使用方法1:super就是調用一下父類的構造函數 在類繼承extends時,如果子類中存在構造函數,則必須在使用"this" ...
  • 同步:瀏覽器訪問網址,瀏覽器創建新的tabpage,新的記憶體塊,載入頁面的全部資源並渲染全部資源。但只要有頁面中的任何一個操作,就會從新的開端全部在創建請求渲染一次,瀏覽器自己控制的http。 非同步:用之前已經渲染過的頁面數據,與後臺交互數據不需要重新來渲染頁面,實現對頁面的部分更新。自己來控制ht ...
  • Ajix是創建互動式網頁的前端網頁開發技術,不是一種語言,ajax是基於http來傳輸數據的,他是利用瀏覽器提供操作http的介面(XMLHttpRequest或者activeXobject),來操作http以達到非同步請求數據的效果。 特點: 1.通過瀏覽器操作http的介面和伺服器進行少量的數據交 ...
  • 1. 基本說明 本項目實現了離線展示百度、谷歌、高德、騰訊地圖。主要功能如下: 實現了地圖瓦片圖下載、存儲。目前支持存儲至MySQL Node.js服務調用MySQL中的瓦片圖 Leaflet展示地圖 展示效果如下: 2. 地圖瓦片下載工具及配置 工具下載鏈接: http://pan.baidu.c ...
  • 以前總是以為vertical-align與text-align是同樣的道理,一個是垂直居中,一個是水平居中,結果在這裡一點效果也沒有。事實上vertical-align與text-align完全不一樣,vertical-align不能這樣用。 vertical-align 屬性設置元素的垂直對齊方式 ...
  • NPM是隨同NodeJS一起安裝的包管理工具,能解決NodeJS代碼部署上的很多問題,常見的使用場景有以下幾種: 允許用戶從NPM伺服器下載別人編寫的三方包到本地使用。 允許用戶從NPM伺服器下載並安裝別人編寫的命令行程式到本地使用。 允許用戶將自己編寫的包或命令行程式上傳到NPM伺服器供別人使用。 ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...