js/jq实现获取手机验证码倒计时效果

众所周知在前段的工作中注册信息或获取当前手机号信息等需求,我们基本上都要涉及到手机号验证码,在网络上搜索的案例杂乱无章,用的时候全是坑,真心不想用了,然后自己写了一个获取手机验证码的倒计时效果。有需求的伙伴们可以看看怎么实现的。

如何获取手机验证码?

小月不知道大家是利用什么平台去获取验证码的,但是告诉大家我是在哪个平台获取的。

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,'')" 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群在群文件可以自行下载哦!

时间: 2024-10-13 22:47:58

js/jq实现获取手机验证码倒计时效果的相关文章

js实现免费获取手机验证码倒计时效果

<div class="input"> <input type="button" id="btn" class="btn_mfyzm" value="免费获取验证码" /> <script type="text/javascript"> var wait=5; document.getElementById("btn").disab

jquery实现获取手机验证码倒计时效果

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><html xmlns="http://www.w3.org/1999/xhtml"><head><script src="http://cdn.bootc

获取手机验证码倒计时那些事

获取手机验证码倒计时 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>获取验证码</title> <meta name="viewport" content="width=device-width,initial-scale=1,minimum-scale=1,maximum-scale=1,user-sca

jQuery实现的手机发送验证码倒计时效果代码分享

这是一款基于jquery实现的手机发送验证码倒计时效果代码,可实现实时显示秒数倒计时的功能,还可实现对手机号码格式验证的功能,是一款常用的网站注册发送手机验证码特效代码. 效果描述:注册一个网站,当需要发送验证码到手机上的时候,我们经常碰到这样的效果:首先检测手机是否符合1开头,11位数字的格式:若不符合,则提示错误信息并返回false:否则提交给后台,后台确定接收后返回一个值,发送按钮变为灰色并倒计时. 运行效果: 年利率高达14.4% 上海投融理财,20万起投,年化收益14.4% 房产抵押,

Andorid实现点击获取验证码倒计时效果

这篇文章主要介绍了Andorid实现点击获取验证码倒计时效果,这种效果大家经常遇到,想知道如何实现的,请阅读本文 我们在开发中经常用到倒计时的功能,比如发送验证码后,倒计时60s再进行验证码的获取,为了方便以后使用,这里做个记录,讲讲倒计时器的实现. 1.先进行倒计时工具类的封装 1 public class CountDownTimerUtils extends CountDownTimer { 2 private TextView mTextView; 3 4 /** 5 * @param

安卓发送验证码倒计时效果和自动获取验证码并填充到输入框

在注册,实名认证.修改手机号码的,我们都会用发送验证码的功能,在这里经常就会涉及到2个效果, 第一个:发送验证码倒计时效果: 第二个:自动获取接收到的短信,并且填充验证码. 先来说倒计时效果: 其实很简单,就是一个计时器.每秒刷新一次,倒计时完了.就可以重新点击获取了. <pre name="code" class="java">btn_getYzm.setEnabled(false); btn_getYzm.setBackgroundResource(

用CountDownTimer实现获取手机验证码效果

简述: CountDownTimer类用来实现倒计时效果. 构造方法接收两个参数,第一个设置倒计时长度,第二个设置倒计时间隔. 用此方法时只需复写onTick()和onFinish()这两个方法即可. 示例: package com.example.androidtest; import android.app.Activity; import android.graphics.Color; import android.os.Bundle; import android.os.CountDow

倒计时按钮—获取手机验证码按钮

HTML:  <input type="button" value="获取验证码">  CSS: 1 input[type=button] { 2 width: 150px; 3 height: 30px; 4 background-color: #ff3000; 5 border: 0; 6 border-radius: 15px; 7 color: #fff; 8 } 9 10 input[type=button].on { 11 backgroun

React中发送验证码 倒计时效果组件编写

(1)可以通过使用"react-timer-mixin"插件实现倒计时效果,原理同下面的思路一样此处不在详细解说 (2)自己用原生定时器方法实现 1 import React,{Component} from 'react'; 2 import {Button } from 'antd-mobile'; 3 import PropTypes from 'prop-types'; 4 class SendVerifyCode extends Component{ 5 constructo