js/jq實現獲取手機驗證碼倒計時效果

来源:http://www.cnblogs.com/youyuekeji/archive/2016/06/13/5580344.html
-Advertisement-
Play Games

眾所周知在前段的工作中註冊信息或獲取當前手機號信息等需求,我們基本上都要涉及到手機號驗證碼,在網路上搜索的案例雜亂無章,用的時候全是坑,真心不想用了,然後自己寫了一個獲取手機驗證碼的倒計時效果。有需求的伙伴們可以看看怎麼實現的。 如何獲取手機驗證碼? 小月不知道大家是利用什麼平臺去獲取驗證碼的,但是 ...


眾所周知在前段的工作中註冊信息或獲取當前手機號信息等需求,我們基本上都要涉及到手機號驗證碼,在網路上搜索的案例雜亂無章,用的時候全是坑,真心不想用了,然後自己寫了一個獲取手機驗證碼的倒計時效果。有需求的伙伴們可以看看怎麼實現的。

yanzhengma (1)

如何獲取手機驗證碼?

小月不知道大家是利用什麼平臺去獲取驗證碼的,但是告訴大家我是在哪個平臺獲取的。

LeanCloud :https://leancloud.cn/

文檔:https://leancloud.cn/docs/sms_guide-js.html

在這個平臺首先去要註冊一個賬號,在設置裡面設置自己的信息按照文檔去操作就可以了這裡不多說了,大部分是後臺去操作些介面的,我們前端有能力的可以自己去嘗試用php去寫介面。(懶惰的我是不會寫。)

一般是兩個介面:

  1. 發送驗證請求(這樣你的手機會受到簡訊驗證哦)
  2. 返回數據驗證手機號和驗證是否一致

根據後臺攻城獅的介面去實現吧。

前端頁面的工作

下麵這段代碼就是上圖所示的頁面

<div class="pop">
    <div class="con">
        <span class="close"><img src="img/close.png"></span>
        <div class="page1">
           <p class="info">
               <span class="title">手機號:</span>
               <input type="tel" class="tel" id="mobile" onkeyup="value=value.replace(/[^\w\.\/]/ig,&#39;&#39;)" required="" placeholder="請輸入您的手機號">
           </p>
           <p class="info">
              <span class="title">驗證碼:</span>
              <input type="tel" class="code" placeholder="輸入驗證碼">
              <span class="code1">獲取驗證碼</span>
           </p>
           <div class="demand demand2" style="width: 70%; margin-top: 20px;">提交</div>
       </div>
       <div class="page2">
           <p class="p1">提交成功</p>
           <p class="p2">我們將在索要成功後</p>
           <p class="p2">第一時間通知您!</p>
           <div class="demand demand3" style="width: 80%; margin-top: 20px; margin-bottom: 10px;">朕知道了</div>
       </div>
    </div>
</div>

 

校驗手機號是否正確

//校驗手機號
//頁面的input寫的正則下麵直接調用方法就可以的
 jQuery.extend({
     checkmobileNo: function(str) {
         var re =/^1[3|7|5|8]\d{9}$/;
         if (re.test(str)) {
             return true;
         } else {
             return false;
         }
     }
 });

 

JS/JQ部分處理髮送簡訊驗證請求

//發送驗證碼給手機
 $.ajax({
 type: 'GET',
 url:"你們後臺提供的介面" + mobile, //即上面的介面1
 success: function(data, status) {
 if (data.errcode==0) {
 alert("已發送");
 $(".code1").attr("disabled", "disabled");
 $(".code1").css("background-color", "#b4b2b3");

//下麵就是實現倒計時的效果代碼
 var d = new Date();
 d.setSeconds(d.getSeconds() + 59);
 var m = d.getMonth() + 1;
 var time = d.getFullYear() + '-' + m + '-' + d.getDate() + ' ' + d.getHours() + ':' + d.getMinutes() + ':' + d.getSeconds();

 var id = ".code1";
 var end_time = new Date(Date.parse(time.replace(/-/g, "/"))).getTime(),
 //月份是實際月份-1
 sys_second = (end_time - new Date().getTime()) / 1000;
 var timer = setInterval(function() {
 if (sys_second > 1) {
 sys_second -= 1;
 var day = Math.floor((sys_second / 3600) / 24);
 var hour = Math.floor((sys_second / 3600) % 24);
 var minute = Math.floor((sys_second / 60) % 60);
 var second = Math.floor(sys_second % 60);
 var time_text = '';
 if (day > 0) {
 time_text += day + '天';
 }
 if (hour > 0) {
 if (hour < 10) {
 hour = '0' + hour;
 }
 time_text += hour + '小時';
 }
 if (minute > 0) {
 if (minute < 10) {
 minute = '0' + minute;
 }
 time_text += minute + '分';
 }
 if (second > 0) {
 if (second < 10) {
 second = '0' + second;
 }
 time_text += second + '秒';
 }
 $(id).text(time_text);

 } else {
 clearInterval(timer);
 $(".code1").attr("disabled", false);
 $(".code1").text('獲取驗證碼');
 $(".code1").css("background-color", "#f67a62");
 }
 },
 1000); 
 
 }else{
 alert("發送失敗,請再試一次。");
 }
 },
 error: function(data, status) {
 alert(status);
 }
 });
 
 });

 

向伺服器提交信息

//驗證驗證碼和手機發送的驗證碼是否一致
 $.ajax({
 type: 'GET',
 url: "介面2",
 success: function(data, status) {
 if (data.errcode==0) {
 //向伺服器提交信息
 $.ajax({
 type: 'POST',
 url: "向伺服器提交你們索要填寫的信息介面",
 data: JSON.stringify({     //data這裡看你們的需求根據介面的數據去寫
 "project_id": pid,
 "phone": mobile,
 "device":d
 }),
 success: function(data, status) {
 if (data.errcode==0) {
 $('.page1').hide();
 $('.page2').show();
 }else{
 alert("提交失敗,請在嘗試一次!");
 }
 },
 error: function(data, status) {
 alert(data.errMsg);
 }
 });
 }else{
 alert("驗證碼不正確!");
 }
 },
 error: function(data, status) {
 alert(status);
 }
 });
 
 });

 

終於寫完了,大家有需求的自己嘗試一下吧。有疑問的可以來問小月,想要案例源碼的找小月來要把,DEMO 打開後請加QQ群在群文件可以自行下載哦!

 


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

-Advertisement-
Play Games
更多相關文章
  • img元素允許我們在HTML文檔里嵌入圖像。 要嵌入一張圖像需要使用src和alt屬性,代碼如下: 顯示效果: 1 在超鏈接里嵌入圖像 img元素的一個常見用法是結合a元素創建一個基於圖像的超鏈接,代碼如下: 瀏覽器顯示這張圖片的方式沒有什麼不同。因此,重要的一點事要向用戶提供視覺提示,表明特定圖像 ...
  • 分別利用javascript的源碼和jQuery來實現一個簡單的選項卡,對比各自的步驟。 ...
  • 1、扁平化的設計風格。--淘寶 直接使用input。對其設置height。padding。使滑鼠居中又不會占滿輸入框。 2、背景是圖片的設計。--百度 試用span將input包裹起來。span設置背景。input設置margin。使用-webkit-appearance:none去除系統的預設樣式 ...
  • 1.filter()和not()方法 filter()和not()是一對反方法,filter()是過濾. filter()方法是針對元素自身。(跟has()方法有區別) 2.has()方法 has()方法表示的是包含的意思,它跟filter()方法是有區別的。has()方法有父子級關係。 3.nex ...
  • HTML5能為我們做的事兒很多,最為可口的就是語義化標簽的應用,如果你已經在Chrome或者其他支持HTML5的瀏覽器上用過它的牛x,那這篇文章對你一定有用,因為現在你也可以在IE上用到HTML5。 好吧!大前端今天的主題是:HTML5 Shiv 下麵是引用Google的html5.js文件,好處就 ...
  • HTML部分省略了,很簡單。 下麵是JavaScript ...
  • 手機涉及到填寫表單時,需要手機彈出自定義的輸入框,而非手機自帶的輸入鍵盤,如大寫數字等。 實現思路(考慮多種文本輸入形式): 首先,文本框獲取焦點時禁止手機彈出自帶的輸入鍵盤。 其次,顯示與關閉自定義的輸入鍵盤。 最後,點擊自定義的輸入鍵盤,做判斷使對應的input獲取值。 ...
  • ES5引入Object.getPrototypeOf函數作為獲取對象原型的標準API,但由於之前的很多js引擎使用了一個特殊的__proto__屬性來達到相同的目的。但有些瀏覽器並不支持這個__proto__屬性,所以並不是完全相容的。例如對於擁有null原型的對象,不同的環境結果就不同了。 ...
一周排行
    -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.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...