首页 > 其他分享 >验证码输入框粘贴复制

验证码输入框粘贴复制

时间:2022-09-23 09:33:05浏览次数:51  
标签:box field item function focus 验证码 输入框 border 粘贴

<div class="box">
<div class="field-list">
<div class="field-item"></div>
<div class="field-item"></div>
<div class="field-item"></div>
<div class="field-item"></div>
<div class="field-item"></div>
<div class="field-item"></div>
</div>
<input class="field-input" type="text" maxlength="6">
</div>

// 获取dom
const fieldList = document.querySelectorAll('.field-item');
const fieldInput = document.querySelector('.field-input');

// 监听input输入事件,只支持输入数字,过滤非数字字符
fieldInput.addEventListener('input', function (e) {
const v = e.target.value.replace(/[^\d]/g, '');
e.target.value = v;
// 考虑粘贴情况,循环赋值
for (let i = 0; i < 6; i++) {
fieldList[i].innerHTML = v[i] || '';
}
// 移除旧光标
removeCursor();
// 计算新光标出现位置
calcCursorPosition();
});

// focus
fieldInput.addEventListener('focus', function (e) {
calcCursorPosition();
});

// blur
fieldInput.addEventListener('blur', function (e) {
removeCursor();
});

// 计算光标出现位置
function calcCursorPosition() {
const length = fieldInput.value.length;
if (length < 6) {
fieldList[length].classList.add('field-item-focus');
}
}

// 移除光标
function removeCursor() {
// 最后一位没有光标,?.操作符避免报错
document.querySelector('.field-item-focus')?.classList.remove('field-item-focus');
}

 

 

.box {
position: relative;
width: 338px;
overflow: hidden;
}
.field-list {
display: flex;
justify-content: space-between;
}
.field-item {
box-sizing: border-box;
width: 48px;
height: 48px;
line-height: 46px;
font-size: 24px;
text-align: center;
font-weight: bold;
border: 1px solid #ccc;
border-radius: 3px;
}
.field-item-focus {
border-color: #409EFF;
}
.field-item-focus::before {
content: '';
display: block;
width: 2px;
height: 30px;
margin: 8px auto;
background: skyblue;
animation: blink 1s steps(1) infinite;
}
@keyframes blink {
50% {
opacity: 0;
}
}
.field-input {
box-sizing: border-box;
position: absolute;
top: 0;
right: 0;
width: calc(100% + 60px);
height: 48px;
padding: 0;
border: none;
outline: none;
opacity: 0;
background: transparent;
}

标签:box,field,item,function,focus,验证码,输入框,border,粘贴
From: https://www.cnblogs.com/czb1218/p/16721590.html

相关文章

  • NodePad++一次复制多行粘贴到对应位置
    有时候要写sql,但是里面有很多字段要对应上,如果要自己一个字段一个字段的去写是在有点麻烦,是不是有更好的方法做到这件事呢?要做这件事,首先分析下我们已有数据的情况,每个字......
  • 直播平台开发,自带干扰线的js随机验证码
    直播平台开发,自带干扰线的js随机验证码 <!DOCTYPEhtml><html><head>  <metacharset="UTF-8">  <metaname="viewport"content="width=device-width,initial......
  • uni-app 获取图片验证码
      <image:src="imgVerificationCode"@click="getVerificationCode"class="imageCode"></image>arrayBufferToBase64(buffer){ varbinary=''; ......
  • FCKEditor粘贴word图片问题解决
    ​ 当前功能基于PHP,其它语言流程大致相同 1.新增上传wordjson配置在ueditor\php\config.json中新增如下配置:     /* 上传word配置 */    "wordAction......
  • autocomplete="off"清空输入框
    有过表单设计经验的朋友肯定知道,当我们在浏览器中输入表单信息的时候,往往input文本输入框会记录下之前提交表单的信息,以后每次只要双击input文本输入框就会出现之前......
  • 验证码测试
    验证码功能的实现可以分为三个步骤:(1)UI点击获取验证码,同步显示验证码有效时间(2)后端获得指令后通过代理平台发送验证短信(3)用户收到短信,在UI上提交验证码,后台做逻辑判断......
  • ckeditor粘贴word文档图片的技术
    ​图片的复制无非有两种方法,一种是图片直接上传到服务器,另外一种转换成二进制流的base64码目前限chrome浏览器使用首先以um-editor的二进制流保存为例:打开umeditor.js,......
  • ckeditor粘贴word文档图片的实例解析.
    ​ 在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper。通过知乎提供的思路找到粘......
  • ckeditor粘贴word文档图片的示例
    ​ 在之前在工作中遇到在富文本编辑器中粘贴图片不能展示的问题,于是各种网上扒拉,终于找到解决方案,在这里感谢一下知乎中众大神以及TheViper。通过知乎提供的思路找到粘......
  • ckeditor粘贴word文档图片的实例
    ​如何做到ueditor批量上传word图片?1、前端引用代码<!DOCTYPE html PUBLIC "-//W3C//DTDXHTML1.0Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-......