js模拟支付宝发送短信验证码&&&&短信倒计时
html
<div class="pwdContent">
<div class="pwdBox"></div>
<div class="pwdErrorPoint">请输入数字!</div> </div> js
// 短信验证码
/*动态生成*/
var pwdBox = document.getElementsByClassName("pwdBox")[0]; 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);
}
} createDIV1(6); 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(); var pwdErrorPoint = document.getElementsByClassName("pwdErrorPoint")[0]; /*绑定pawDiv点击事件*/ 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"; } else if (event.keyCode == "8") {
/*退格回删事件*/
firstDiv1(); } else if (event.keyCode == "13") {
/*回车事件*/
getPassword1(); } else {
/*输入非0-9*/
pwdErrorPoint.style.display = "block";
this.value = "";
} };
} } func1(); /*定义pawDiv点击事件*/
var pawDivClick1 = function (e) {
for (var i = 0; i < pawDivCountVali; i++) {
// pawDivVali[i].setAttribute("style","border:none");
}
}; /*定义自动选中下一个输入框事件*/
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]);
}
}
}; /*回删时选中上一个输入框事件*/
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;
}
}
}; /*验证码输入错误直接回到第一个输入框事件*/
var firstDiv2 = function () {
for (var i = 0; i < pawDivCountVali; i++) {
console.log(i);
pawVali[i].value = ""
/*处理当前输入框*/
console.log(i);
pawVali[i].blur(); /*处理上一个输入框*/
pawDivClick(pawVali[i]); }
pawVali[0].focus();
pawVali[0].readOnly = false;
}; /*获取输入密码*/
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); /*键盘事件*/
document.onkeyup = function (event) {
if (event.keyCode == "13") {
/*回车事件*/
getPassword();
}
}; css
.pwdBox {
width: 228px;
height: 37px;
border: 1px solid #ccc;
margin-top: 10px;
line-height: 30px;
}
#validateBox {
position: relative;
}
.jp-logo-wrap {
position: absolute;
}
.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;
}
.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;
}
// 短信验证码倒计时 html
<div class="validSend">
<input type="button" id="btn" value="免费获取验证码" onclick="settime(this)"/>
</div>
js
var countdown = 60;
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模拟支付宝发送短信验证码&&&&短信倒计时的更多相关文章
- js实现发送短信验证码后的倒计时功能(无视页面刷新)
[1].[代码] 这是页面上的发送验证码按钮 跳至 [1] [2] [3]<input id="second" type="button" value=& ...
- 基于JS实现发送短信验证码后的倒计时功能(无视页面刷新,页面关闭不进行倒计时功能)
<!doctype html> <html lang="en"> <head> <meta charset="UTF-8&quo ...
- js模拟支付宝提交表单
弄过支付宝的程序猿可能都知道,里面有非常多地方都用到了自提交表单的方式,支付宝的接口通过请求API的形式取得server返回的表单字符串,使用out.print("表单字符串")在 ...
- spring boot:用redis+lua限制短信验证码的发送频率(spring boot 2.3.2)
一,为什么要限制短信验证码的发送频率? 1,短信验证码每条短信都有成本制约, 肯定不能被刷接口的乱发 而且接口被刷会影响到用户的体验, 影响服务端的正常访问, 所以既使有图形验证码等的保护, 我们仍然 ...
- Django商城项目笔记No.5用户部分-注册接口-短信验证码
Django商城项目笔记No.4用户部分-注册接口-短信验证码 短信验证码也保存在redis里(sms_code_15101234567) 在views中新增SMSCodeView类视图,并且写出步骤 ...
- Android学习笔记之短信验证码的获取和读取
PS:最近很多事情都拖拖拉拉的..都什么办事效率啊!!! 还得吐槽一下移动运营商,验证码超过五次的时候,直接把我的手机号封闭.真是受够了. 学习笔记: 1.Android之如何获取短信验证码. 2.如 ...
- Atitit. 破解 拦截 绕过 网站 手机 短信 验证码 方式 v2 attilax 总结
Atitit. 破解 拦截 绕过 网站 手机 短信 验证码 方式 v2 attilax 总结 1. 验证码的前世今生11.1. 第一代验证码 图片验证码11.2. 第二代验证码 用户操作 ,比如 ...
- js 发送短信验证码倒计时
html <input type="button" id="btn" value="免费获取验证码" onclick="se ...
- JS异步操作之promise发送短信验证码.html
<!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <meta cont ...
随机推荐
- 并不对劲的bzoj4197:loj2131:uoj129:p2150:[NOI2015]寿司晚宴
题目大意 有两个集合\(S_1,S_2 \subseteq [2,n] (n\leq 500)\),且对于\(\forall x\in S_1,y\in S_2 , gcd(x,y)=1\) 求\(S ...
- 【HDU 1599】 Find the mincost route
[题目链接] 点击打开链接 [算法] 弗洛伊德求最小环模板 我们知道,在一个环上,一定有一个有且仅有一个编号最大的点,设这个点为k,起点为i,终点为j,那么 mincost = dist[i][j] ...
- 09_传智播客iOS视频教程_自动释放池与NSLog函数
不要管什么是自动释放池,现在给你讲你也听不懂.就业班才讲,不要知道太多,知道太多对你不好.电影里面死的最惨的人就是知道最多的人.把代码写到自动释放池里面就可以了.NSLog是printf的增强版,它增 ...
- hihoCoder 扩展二进制数
明天就要去实验室干活了....下次再打题不知是何时.... 题目链接: http://hihocoder.com/contest/hihointerview11/problem/2 这题不难,一开始想 ...
- Fastjson详解
Fastjson是一个Java语言编写的高性能功能完善的JSON库.它采用一种"假定有序快速匹配"的算法,把JSON Parse的性能提升到极致,是目前Java语言中最快的JSON ...
- 标准行cp功能
#include<stdio.h> int main(int argc,char *argv[]) { FILE *src_fp,*des_fp; ]={}; ) { printf(&qu ...
- python ftp小程序练习
作业要求: 开发一个支持多用户在线的FTP程序 要求: 1.用户加密认证 2.允许同时多用户登陆 3.每个用户都有自己的家目录,并且只能访问自己的家目录 4.对用户进行磁盘配额,每个用户的可用空间不同 ...
- import android.support.v4或者import android.support.v7提示导入错误解决办法
转自: http://blog.csdn.net/forandever/article/details/37655139 在使用Eclipse开发andriod程序时,程序中提示import and ...
- 大小写 unix and windows
如果你没有使用工具, 只是sqlplus对大小写不敏感. 如果你要给sql传递参数,且在windows下面就不需要考虑.如果是aix系统,最好写一样.
- jmeter(十五)Jmeter默认报告优化
一.本文目的: 之前写了两篇文章搭建持续集成接口测试平台(Jenkins+Ant+Jmeter)和ANT批量执行Jmeter脚本,功能实现上都没有什么问题,但是最后生成的报告有一点小问题,虽然不影响使 ...