溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

js/jq實(shí)現(xiàn)獲取手機(jī)驗(yàn)證碼倒計(jì)時(shí)效果

發(fā)布時(shí)間:2020-08-02 20:58:25 來(lái)源:網(wǎng)絡(luò) 閱讀:723 作者:asdffgf 欄目:開(kāi)發(fā)技術(shù)

眾所周知在前段的工作中注冊(cè)信息或獲取當(dāng)前手機(jī)號(hào)信息等需求,我們基本上都要涉及到手機(jī)號(hào)驗(yàn)證碼,在網(wǎng)絡(luò)上搜索的案例雜亂無(wú)章,用的時(shí)候全是坑,真心不想用了,然后自己寫(xiě)了一個(gè)獲取手機(jī)驗(yàn)證碼的倒計(jì)時(shí)效果。有需求的伙伴們可以看看怎么實(shí)現(xiàn)的。

js/jq實(shí)現(xiàn)獲取手機(jī)驗(yàn)證碼倒計(jì)時(shí)效果

如何獲取手機(jī)驗(yàn)證碼?

小月不知道大家是利用什么平臺(tái)去獲取驗(yàn)證碼的,但是告訴大家我是在哪個(gè)平臺(tái)獲取的。

LeanCloud :https://leancloud.cn/

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

在這個(gè)平臺(tái)首先去要注冊(cè)一個(gè)賬號(hào),在設(shè)置里面設(shè)置自己的信息按照文檔去操作就可以了這里不多說(shuō)了,大部分是后臺(tái)去操作些接口的,我們前端有能力的可以自己去嘗試用php去寫(xiě)接口。(懶惰的我是不會(huì)寫(xiě)。)

一般是兩個(gè)接口:

  1. 發(fā)送驗(yàn)證請(qǐng)求(這樣你的手機(jī)會(huì)受到短信驗(yàn)證哦)

  2. 返回?cái)?shù)據(jù)驗(yàn)證手機(jī)號(hào)和驗(yàn)證是否一致

根據(jù)后臺(tái)攻城獅的接口去實(shí)現(xiàn)吧。

前端頁(yè)面的工作

下面這段代碼就是上圖所示的頁(yè)面

<div class="pop">
    <div class="con">
        <span class="close"><img src="img/close.png"></span>
        <div class="page1">
           <p class="info">
               <span class="title">手機(jī)號(hào):</span>
               <input type="tel" class="tel" id="mobile" onkeyup="value=value.replace(/[^\w\.\/]/ig,&#39;&#39;)" required="" placeholder="請(qǐng)輸入您的手機(jī)號(hào)">
           </p>
           <p class="info">
              <span class="title">驗(yàn)證碼:</span>
              <input type="tel" class="code" placeholder="輸入驗(yàn)證碼">
              <span class="code1">獲取驗(yàn)證碼</span>
           </p>
           <div class="demand demand2" >提交</div>
       </div>
       <div class="page2">
           <p class="p1">提交成功</p>
           <p class="p2">我們將在索要成功后</p>
           <p class="p2">第一時(shí)間通知您!</p>
           <div class="demand demand3" >朕知道了</div>
       </div>
    </div>
</div>

校驗(yàn)手機(jī)號(hào)是否正確

//校驗(yàn)手機(jī)號(hào)
//頁(yè)面的input寫(xiě)的正則下面直接調(diào)用方法就可以的
 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部分處理發(fā)送短信驗(yàn)證請(qǐng)求

//發(fā)送驗(yàn)證碼給手機(jī)
 $.ajax({
 type: 'GET',
 url:"你們后臺(tái)提供的接口" + mobile, //即上面的接口1
 success: function(data, status) {
 if (data.errcode==0) {
 alert("已發(fā)送");
 $(".code1").attr("disabled", "disabled");
 $(".code1").css("background-color", "#b4b2b3");

//下面就是實(shí)現(xiàn)倒計(jì)時(shí)的效果代碼
 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(),
 //月份是實(shí)際月份-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 + '小時(shí)';
 }
 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('獲取驗(yàn)證碼');
 $(".code1").css("background-color", "#f67a62");
 }
 },
 1000); 
 
 }else{
 alert("發(fā)送失敗,請(qǐng)?jiān)僭囈淮巍?);
 }
 },
 error: function(data, status) {
 alert(status);
 }
 });
 
 });

服務(wù)器提交信息

//驗(yàn)證驗(yàn)證碼和手機(jī)發(fā)送的驗(yàn)證碼是否一致
 $.ajax({
 type: 'GET',
 url: "接口2",
 success: function(data, status) {
 if (data.errcode==0) {
 //向服務(wù)器提交信息
 $.ajax({
 type: 'POST',
 url: "向服務(wù)器提交你們索要填寫(xiě)的信息接口",
 data: JSON.stringify({     //data這里看你們的需求根據(jù)接口的數(shù)據(jù)去寫(xiě)
 "project_id": pid,
 "phone": mobile,
 "device":d
 }),
 success: function(data, status) {
 if (data.errcode==0) {
 $('.page1').hide();
 $('.page2').show();
 }else{
 alert("提交失敗,請(qǐng)?jiān)趪L試一次!");
 }
 },
 error: function(data, status) {
 alert(data.errMsg);
 }
 });
 }else{
 alert("驗(yàn)證碼不正確!");
 }
 },
 error: function(data, status) {
 alert(status);
 }
 });
 
 });

終于寫(xiě)完了,大家有需求的自己嘗試一下吧,這個(gè)只是一部分驗(yàn)證碼千千萬(wàn)萬(wàn)種歡迎分享哦。有疑問(wèn)的可以來(lái)問(wèn)小月。

需要DEMO的請(qǐng)點(diǎn)擊下載: ××× 沒(méi)有提供下載的請(qǐng)給我留言哦!


向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI