<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
驗證碼輸入框應該是很常見的需求吧,不知道各位小夥伴在在遇到的時候是選擇找一找外掛還是自己動手擼一個呢?我花了點時間擼了一個出來,實際體驗還不錯,分享給大家。
我在實現之前肯定也是上網搜了一下的,網上的方式大多是使用多個input標籤來實現,但我覺得不太優雅,就自己想了一個方法。使用了6個div標籤和一個input標籤。驗證碼長度一般是4位元或6位,我這裡用6位做演示。
上述佈局在pc端是ok的,但是在行動端會有問題,行動端的遊標底部會有個控制元件,你能夠拖動調整遊標位置。大概長這個樣子,如下圖:
不過解決方法也很簡單,紅色背景是box,藍色背景是input
為了方便理解,我將top設定為48px,如下圖
實際應該是top: 0,如下圖
下面是程式碼,聰明的你一看就明白。
<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>
.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; }
// 獲取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'); }
實現效果
以上就是js 實現驗證碼輸入框範例詳解的詳細內容,更多關於js 驗證碼輸入框的資料請關注it145.com其它相關文章!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45