1. html
  1. <div class="pwdContent">
    <div class="pwdBox"></div>
    <div class="pwdErrorPoint">请输入数字!</div>
  2.  
  3. </div>
  4.  
  5. js
  1. // 短信验证码
    /*动态生成*/
    var pwdBox = document.getElementsByClassName("pwdBox")[0];
  2.  
  3. function createDIV1(num) {
    for (var i = 0; i < num; i++) {
    var pawDiv = document.createElement("div");
    pawDiv.className = "pawDivVali";
    pwdBox.appendChild(pawDiv);
    var paw = document.createElement("input");
    paw.type = "password";
    paw.className = "pawVali";
    paw.maxLength = "1";
    paw.readOnly = "readonly";
    pawDiv.appendChild(paw);
    }
    }
  4.  
  5. createDIV1(6);
  6.  
  7. var pawDivVali = document.getElementsByClassName("pawDivVali");
    var pawVali = document.getElementsByClassName("pawVali");
    var pawDivCountVali = pawDivVali.length;
    /*设置第一个输入框默认选中*/
    // pawDiv[0].setAttribute("style","border: 2px solid deepskyblue;");
    pawVali[0].readOnly = false;
    pawVali[0].focus();
  8.  
  9. var pwdErrorPoint = document.getElementsByClassName("pwdErrorPoint")[0];
  10.  
  11. /*绑定pawDiv点击事件*/
  12.  
  13. function func1() {
    for (var i = 0; i < pawDivCountVali; i++) {
    pawDivVali[i].addEventListener("click", function () {
    pawDivClick1(this);
    });
    pawVali[i].onkeyup = function (event) {
    console.log(event.keyCode);
    if (event.keyCode >= 48 && event.keyCode <= 57) {
    /*输入0-9*/
    changeDiv1();
    pwdErrorPoint.style.display = "none";
  14.  
  15. } else if (event.keyCode == "8") {
    /*退格回删事件*/
    firstDiv1();
  16.  
  17. } else if (event.keyCode == "13") {
    /*回车事件*/
    getPassword1();
  18.  
  19. } else {
    /*输入非0-9*/
    pwdErrorPoint.style.display = "block";
    this.value = "";
    }
  20.  
  21. };
    }
  22.  
  23. }
  24.  
  25. func1();
  26.  
  27. /*定义pawDiv点击事件*/
    var pawDivClick1 = function (e) {
    for (var i = 0; i < pawDivCountVali; i++) {
    // pawDivVali[i].setAttribute("style","border:none");
    }
    };
  28.  
  29. /*定义自动选中下一个输入框事件*/
    var changeDiv1 = function () {
    for (var i = 0; i < pawDivCountVali; i++) {
    if (pawVali[i].value.length == "1") {
    /*处理当前输入框*/
    pawVali[i].blur();
    /*处理上一个输入框*/
    // 添加背景点
    // paw[i].setAttribute("style","background: red;");
    if (i == 5) {
    alert("验证码输入是否正确")
    getPassword1();
    return
    }
    pawVali[i + 1].focus();
    pawVali[i + 1].readOnly = false;
    pawDivClick(pawVali[i + 1]);
    }
    }
    };
  30.  
  31. /*回删时选中上一个输入框事件*/
    var firstDiv1 = function () {
    for (var i = 0; i < pawDivCountVali; i++) {
    console.log(i);
    if (pawVali[i].value.length == "0") {
    /*处理当前输入框*/
    console.log(i);
    pawVali[i].blur();
    /*处理上一个输入框*/
    pawVali[i - 1].focus();
    pawVali[i - 1].readOnly = false;
    pawVali[i - 1].value = "";
    pawDivClick(pawVali[i - 1]);
    break;
    }
    }
    };
  32.  
  33. /*验证码输入错误直接回到第一个输入框事件*/
    var firstDiv2 = function () {
    for (var i = 0; i < pawDivCountVali; i++) {
    console.log(i);
    pawVali[i].value = ""
    /*处理当前输入框*/
    console.log(i);
    pawVali[i].blur();
  34.  
  35. /*处理上一个输入框*/
    pawDivClick(pawVali[i]);
  36.  
  37. }
    pawVali[0].focus();
    pawVali[0].readOnly = false;
    };
  38.  
  39. /*获取输入密码*/
    var getPassword1 = function () {
    var n = "";
    for (var i = 0; i < pawDivCountVali; i++) {
    n += pawVali[i].value;
    }
    // 如果密码输入成功
    $(".pay-ui-btn").removeClass("disable")
    alert(n);
    $("#pursePayForm input[name='validateCode']").val(n)
    alert("验证码输入错误")
    $(".errorPointVali").css({display: 'block'})
    setTimeout(function () {
    $(".errorPointVali").css({display: 'none'})
    }, 2000)
    firstDiv2()
    };
    // var getPasswordBtn=document.getElementsByClassName("getPasswordBtn")[0];
    //
    // getPasswordBtn.addEventListener("click",getPassword);
  40.  
  41. /*键盘事件*/
    document.onkeyup = function (event) {
    if (event.keyCode == "13") {
    /*回车事件*/
    getPassword();
    }
    };
  42.  
  43. css
  1. .pwdBox {
    width: 228px;
    height: 37px;
    border: 1px solid #ccc;
    margin-top: 10px;
    line-height: 30px;
    }
  2.  
  3. #validateBox {
    position: relative;
    }
  4.  
  5. .jp-logo-wrap {
    position: absolute;
    }
  6.  
  7. .jp-logo-wrap .jp-logo {
    background-position: -51px -41px;
    width: 102px;
    height: 35px;
    position: absolute;
    left: -34px;
    top: 5px;
    background: url('http://test.storage.jd.com/et-trade/pdf/receipt/20181019/cashier_two.jpg?Expires=1575941007&AccessKey=jZAZj2evo1DsyCu7&Signature=XWPKewwj1oNwdEKedpQOFzTOAwM%3D') no-repeat;
    }
  8.  
  9. .index-cont-top span {
    background-position: -51px -77px;
    background: url('http://test.storage.jd.com/et-trade/pdf/receipt/20181019/cashier_two.jpg?Expires=1575941007&AccessKey=jZAZj2evo1DsyCu7&Signature=XWPKewwj1oNwdEKedpQOFzTOAwM%3D') no-repeat;
    border-bottom: 1px solid #eee;
    }
  1.  
  2. // 短信验证码倒计时
  3.  
  4. html
  1. <div class="validSend">
    <input type="button" id="btn" value="免费获取验证码" onclick="settime(this)"/>
    </div>
  1. js
  2.  
  3. var countdown = 60;
  4.  
  5. function settime(obj) {
    sedSms();
    if (countdown == 0) {
    obj.removeAttribute("disabled");
    obj.value = "免费获取验证码";
    countdown = 60;
    return;
    } else {
    obj.setAttribute("disabled", true);
    obj.value = "重新发送(" + countdown + ")";
    countdown--;
    }
    setTimeout(function () {
    settime(obj)
    }
    , 1000)
    }

js模拟支付宝发送短信验证码&&&&短信倒计时的更多相关文章

  1. js实现发送短信验证码后的倒计时功能(无视页面刷新)

    [1].[代码] 这是页面上的发送验证码按钮 跳至 [1] [2] [3]<input id="second" type="button" value=& ...

  2. 基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)

    <!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...

  3. js模拟支付宝提交表单

    弄过支付宝的程序猿可能都知道,里面有非常多地方都用到了自提交表单的方式,支付宝的接口通过请求API的形式取得server返回的表单字符串,使用out.print("表单字符串")在 ...

  4. spring boot:用redis+lua限制短信验证码的发送频率(spring boot 2.3.2)

    一,为什么要限制短信验证码的发送频率? 1,短信验证码每条短信都有成本制约, 肯定不能被刷接口的乱发 而且接口被刷会影响到用户的体验, 影响服务端的正常访问, 所以既使有图形验证码等的保护, 我们仍然 ...

  5. Django商城项目笔记No.5用户部分-注册接口-短信验证码

    Django商城项目笔记No.4用户部分-注册接口-短信验证码 短信验证码也保存在redis里(sms_code_15101234567) 在views中新增SMSCodeView类视图,并且写出步骤 ...

  6. Android学习笔记之短信验证码的获取和读取

    PS:最近很多事情都拖拖拉拉的..都什么办事效率啊!!! 还得吐槽一下移动运营商,验证码超过五次的时候,直接把我的手机号封闭.真是受够了. 学习笔记: 1.Android之如何获取短信验证码. 2.如 ...

  7. Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结

    Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结 1. 验证码的前世今生11.1. 第一代验证码 图片验证码11.2. 第二代验证码  用户操作 ,比如 ...

  8. js 发送短信验证码倒计时

    html <input type="button" id="btn" value="免费获取验证码" onclick="se ...

  9. JS异步操作之promise发送短信验证码.html

    <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta cont ...

随机推荐

  1. 协程的优点(Python)

    协程的优点: 协程是进程和线程的升级版,进程和线程都面临着内核态和用户态的切换问题而耗费许多切换时间, 而协程就是用户自己控制切换的时机,不再需要陷入系统的内核态.协程的执行效率非常高.因为子程序切换 ...

  2. [学习笔记]dsu on a tree(如何远离线段树合并)

    https://www.zybuluo.com/ysner/note/1318613 背景 这玩意来源于一种有局限性的算法. 有一种广为人知的,树上离线维护子树信息的做法. (可以参照luogu360 ...

  3. JEDEC标准(JESD216)S FDP对串行Flash在系统中的应用

    摘要:JEDEC标准(JESD216)Serial Flash Discoverable Parameter (SFDP)[1]是在串行Flash中建立一个可供查询的描述串行Flash功能的参数表.文 ...

  4. Java Socket实战之五:使用加密协议传输对象

    转自:http://developer.51cto.com/art/201202/317547.htm 前面几篇博文提到了Socket中一些常用的用法,但是对于一些有安全要求的应用就需要加密传输的数据 ...

  5. 反编译Android的apk包得到源码(使用工具:dex2jar和jd-gui)

    1. 先从 http://download.csdn.net/detail/dingyuming1991/9618125 下载反编译工具dex2jar和jd-gui(当然也可以google搜索下载): ...

  6. Gym 100531A Alarm Clock (水题)

    题意:给定一个被高亮的数,问你是不是有个时间恰好高亮是这个数. 析:直接暴力,直接暴力,枚举每一位时间,当然也可以枚举时间,能找到就是有,找不到就算了. 代码如下: #pragma comment(l ...

  7. UVa 12717 Fiasco (BFS模拟)

    题意:给定一个错误代码,让你修改数据,使得它能够输出正确答案,错误代码是每次取最短的放入. 析:那么我们就可以模拟这个过程,然后修改每条边的权值,使得它能输出正确答案. 代码如下: #pragma c ...

  8. 洛谷 P1081 开车旅行【双向链表+倍增】

    倍增数组的20和N写反了反复WAWAWA-- 注意到a和b在每个点上出发都会到一个指定的点,所以这样构成了两棵以n点为根的树 假设我们建出了这两棵树,对于第一问就可以枚举起点然后倍增的找出ab路径长度 ...

  9. 从Oracle9i RMAN全库备份迁移到 Oracle10g

    1. 创建以下目录: mkdir -pv $ORACLE_BASE/admin/$ORACLE_SID/{{a,b,c,dp,u}dump,pfile} mkdir -pv $ORACLE_BASE/ ...

  10. 《windows核心编程系列》十七谈谈dll

    DLL全称dynamic linking library.即动态链接库.广泛应用与windows及其他系统中.因此对dll的深刻了解,对计算机软件开发专业人员来说非常重要. windows中所有API ...