DDR爱好者之家 Design By 杰米
上次看到别人说写一个类似支付宝支付密码的输入框效果,今天就想自己写了试试看,大体功能是实现了。
已实现部分:
1. 焦点会随着输入数值往后推移
2. 如果输入的非0-9,则会出现提示
3. 按Backspance回车可以对应格子焦点往前推移
4. 按回车或者点击按钮可以触发按钮点击事件,获得输入值
未完善部分:
1. 在控制输入类型的时候,只有0-9、非0-9以及回车、回删几个键盘事件的区分,不够完善
2. 输入框用的input标签,password类型,会将输入值变成圆点,但是圆点太小不够美观,不知道如何改变圆点大小,考虑是否要画个圆点遮盖
ps:代码不够精简,很多感觉还可以改进精简。
效果图:
代码段:
**index.html 主要代码**
<div class="content"> <div class="title">支付宝支付密码:</div> <div class="box"></div> <div class="forget">忘记密码?</div> <div class="point">请输入6位数字密码</div> <button class="getPasswordBtn">一键获取密码</button> <div class="errorPoint">请输入数字!</div> </div>
**reset.css代码**
*{ padding: 0; margin: 0; } .content{ width: 400px; height: 50px; margin: 0 auto; margin-top: 100px; } .title{ font-family: '微软雅黑'; font-size: 16px; } .box{ width: 190px; height: 30px; border:1px solid #ccc; margin-top: 10px; line-height: 30px; } .content .box,.forget{ display: inline-block; } .content .forget{ width: 100px; color:lightskyblue; vertical-align: super; font-size: 14px; } .box input.paw{ width: 30px; height: 20px; line-height: 20px; margin-left: -9px; border:none; border-right: 1px dashed #ccc; text-align: center; } .box input.paw:nth-child(1){ margin-left: 0; } .content .box .pawDiv:nth-child(6) input.paw{ border: none; } .content .box input.paw:focus{outline:0;} .content .box .pawDiv{ display: inline-block; line-height: 30px; width: 31px; height: 31px; margin-top: -2px; float: left; } .point{ font-size: 14px; color: #ccc; margin: 5px 0; } .errorPoint{ color: red; display: none; } .getPasswordBtn{ width: 100px; height: 30px; background-color: cornflowerblue; font-size: 14px; font-family: '微软雅黑'; color: white; border: none; }
**main.js代码**
/*动态生成*/ var box=document.getElementsByClassName("box")[0]; function createDIV(num){ for(var i=0;i<num;i++){ var pawDiv=document.createElement("div"); pawDiv.className="pawDiv"; box.appendChild(pawDiv); var paw=document.createElement("input"); paw.type="password"; paw.className="paw"; paw.maxLength="1"; paw.readOnly="readonly"; pawDiv.appendChild(paw); } } createDIV(6); var pawDiv=document.getElementsByClassName("pawDiv"); var paw=document.getElementsByClassName("paw"); var pawDivCount=pawDiv.length; /*设置第一个输入框默认选中*/ pawDiv[0].setAttribute("style","border: 2px solid deepskyblue;"); paw[0].readOnly=false; paw[0].focus(); var errorPoint=document.getElementsByClassName("errorPoint")[0]; /*绑定pawDiv点击事件*/ function func(){ for(var i=0;i<pawDivCount;i++){ pawDiv[i].addEventListener("click",function(){ pawDivClick(this); }); paw[i].onkeyup=function(event){ console.log(event.keyCode); if(event.keyCode>=48&&event.keyCode<=57){ /*输入0-9*/ changeDiv(); errorPoint.style.display="none"; }else if(event.keyCode=="8") { /*退格回删事件*/ firstDiv(); }else if(event.keyCode=="13"){ /*回车事件*/ getPassword(); }else{ /*输入非0-9*/ errorPoint.style.display="block"; this.value=""; } }; } } func(); /*定义pawDiv点击事件*/ var pawDivClick=function(e){ for(var i=0;i<pawDivCount;i++){ pawDiv[i].setAttribute("style","border:none"); } e.setAttribute("style","border: 2px solid deepskyblue;"); }; /*定义自动选中下一个输入框事件*/ var changeDiv=function(){ for(var i=0;i<pawDivCount;i++){ if(paw[i].value.length=="1"){ /*处理当前输入框*/ paw[i].blur(); /*处理上一个输入框*/ paw[i+1].focus(); paw[i+1].readOnly=false; pawDivClick(pawDiv[i+1]); } } }; /*回删时选中上一个输入框事件*/ var firstDiv=function(){ for(var i=0;i<pawDivCount;i++){ console.log(i); if(paw[i].value.length=="0"){ /*处理当前输入框*/ console.log(i); paw[i].blur(); /*处理上一个输入框*/ paw[i-1].focus(); paw[i-1].readOnly=false; paw[i-1].value=""; pawDivClick(pawDiv[i-1]); break; } } }; /*获取输入密码*/ var getPassword=function(){ var n=""; for(var i=0;i<pawDivCount;i++){ n+=paw[i].value; } alert(n); }; var getPasswordBtn=document.getElementsByClassName("getPasswordBtn")[0]; getPasswordBtn.addEventListener("click",getPassword); /*键盘事件*/ document.onkeyup=function(event){ if(event.keyCode=="13") { /*回车事件*/ getPassword(); } };
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持。
DDR爱好者之家 Design By 杰米
广告合作:本站广告合作请联系QQ:858582 申请时备注:广告合作(否则不回)
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
免责声明:本站资源来自互联网收集,仅供用于学习和交流,请遵循相关法律法规,本站一切资源不代表本站立场,如有侵权、后门、不妥请联系本站删除!
DDR爱好者之家 Design By 杰米
暂无评论...
P70系列延期,华为新旗舰将在下月发布
3月20日消息,近期博主@数码闲聊站 透露,原定三月份发布的华为新旗舰P70系列延期发布,预计4月份上市。
而博主@定焦数码 爆料,华为的P70系列在定位上已经超过了Mate60,成为了重要的旗舰系列之一。它肩负着重返影像领域顶尖的使命。那么这次P70会带来哪些令人惊艳的创新呢?
根据目前爆料的消息来看,华为P70系列将推出三个版本,其中P70和P70 Pro采用了三角形的摄像头模组设计,而P70 Art则采用了与上一代P60 Art相似的不规则形状设计。这样的外观是否好看见仁见智,但辨识度绝对拉满。
更新日志
2024年11月28日
2024年11月28日
- 凤飞飞《我们的主题曲》飞跃制作[正版原抓WAV+CUE]
- 刘嘉亮《亮情歌2》[WAV+CUE][1G]
- 红馆40·谭咏麟《歌者恋歌浓情30年演唱会》3CD[低速原抓WAV+CUE][1.8G]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[320K/MP3][193.25MB]
- 【轻音乐】曼托凡尼乐团《精选辑》2CD.1998[FLAC+CUE整轨]
- 邝美云《心中有爱》1989年香港DMIJP版1MTO东芝首版[WAV+CUE]
- 群星《情叹-发烧女声DSD》天籁女声发烧碟[WAV+CUE]
- 刘纬武《睡眠宝宝竖琴童谣 吉卜力工作室 白噪音安抚》[FLAC/分轨][748.03MB]
- 理想混蛋《Origin Sessions》[320K/MP3][37.47MB]
- 公馆青少年《我其实一点都不酷》[320K/MP3][78.78MB]
- 群星《情叹-发烧男声DSD》最值得珍藏的完美男声[WAV+CUE]
- 群星《国韵飘香·贵妃醉酒HQCD黑胶王》2CD[WAV]
- 卫兰《DAUGHTER》【低速原抓WAV+CUE】
- 公馆青少年《我其实一点都不酷》[FLAC/分轨][398.22MB]
- ZWEI《迟暮的花 (Explicit)》[320K/MP3][57.16MB]