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 ...
随机推荐
- SPOJ:Triple Sums(母函数+FFT)
You're given a sequence s of N distinct integers.Consider all the possible sums of three integers fr ...
- [SCOI 2007] 修车
[题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=1070 [算法] 首先 , 我们发现 , 在倒数第i个修车会对答案产生i * k的贡献 ...
- [USACO16JAN]愤怒的奶牛Angry Cows
传送门 一道神奇的DP………(鬼知道他为什么在tarjan里面) 一开始可能会考虑贪心或者什么其他神奇的算法,不过还是DP比较靠谱. 我们用f[i]表示摧毁所有i左侧的炸 药包最少需要的能量,用g[i ...
- join示例分析
join示例分析 public class TestJoin { public static void main(String[] args) throws InterruptedException ...
- UVa 12716 && UVaLive 6657 GCD XOR (数论)
题意:给定一个 n ,让你求有多少对整数 (a, b) 1 <= b <= a 且 gcd(a, b) = a ^ b. 析:设 c = a ^ b 那么 c 就是 a 的约数,那么根据异 ...
- bat批处理文件夹内文件名的提取
有时候会在做某些东西的时候 我们要提取某个文件夹的所有文件名,一个一个打出来那不是 现实的 所以这个时候就用到了一个比较简便而又快捷的方法 在所在的文件夹内新建一个a.txt 在a.txt编辑DIR ...
- 洛谷 P2593 [ZJOI2006]超级麻将【dp】
设f[i][j][k][0/1]表示选到i时,i-1选j张,i选k张,之前选的所有牌是否选择了对子 然后分情况讨论转移即可 #include<iostream> #include<c ...
- bzoj 1614: [Usaco2007 Jan]Telephone Lines架设电话线【二分+spfa】
二分答案,然后把边权大于二分值的的边赋值为1,其他边赋值为0,然后跑spfa最短路看是否满足小于等于k条边在最短路上 #include<iostream> #include<cstd ...
- 洛谷 P3708 koishi的数学题
找规律发现\( f[i]=f[i-1]+n-\sum_{i的因数和} \) 一A了深(sh)蓝(ui)题的我被找规律绿题卡死 记得开long long #include<iostream> ...
- Unix\Linux | 总结笔记 | vi编辑器
0 目录 新建文件夹 常用的命令 三种模式及切换 vi编辑器的启动选项及后续相关操作 其他--替换文本 其他--写入另一个文件 1 新建文件夹 vi [目录名/文件 ...