日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術文章
文章詳情頁

vue實現一個6個輸入框的驗證碼輸入組件功能的實例代碼

瀏覽:158日期:2023-01-11 08:52:27

vue實現一個6個輸入框的驗證碼輸入組件功能的實例代碼

要實現的功能:

完全和單輸入框一樣的操作,甚至可以插入覆蓋:

1,限制輸入數字

2,正常輸入

3,backspace刪除

4,paste任意位置粘貼輸入

5,光標選中一個數字,滾輪可以微調數字大小,限制0-9

6,123|456 自動覆蓋光標后輸入的字符,此時光標在3后,繼續輸入111,會得到123111,而不用手動刪除456

7,封裝成vue單文件組件,方便任意調用。

模板代碼

<template> <div class='input-box'> <div @keydown='keydown' @keyup='keyup' @paste='paste' @mousewheel='mousewheel'@input='inputEvent'> <input max='9' min='0' maxlength='1' data-index='0' v-model.trim.number='input[0]' type='number' ref='firstinput'/> <input max='9' min='0' maxlength='1' data-index='1' v-model.trim.number='input[1]' type='number'/> <input max='9' min='0' maxlength='1' data-index='2' v-model.trim.number='input[2]' type='number'/> <input <input max='9' min='0' maxlength='1' data-index='4' v-model.trim.number='input[4]' type='number'/> <input max='9' min='0' maxlength='1' data-index='5' v-model.trim.number='input[5]' type='number'/> </div> </div></template>

實現了鍵盤的keydown/keyup/paste/input和鼠標滾輪mousewheel事件

使用了6個輸入框的方案來實現。

樣式部分:使用了scss模式

<style scoped lang='scss'> .input-box { .input-content { width: 512px; height: 60px; display: flex; align-items: center; justify-content: space-between; input {color: inherit;font-family: inherit;border: 0;outline: 0;border-bottom: 1px solid #919191;height: 60px;width: 60px;font-size: 44px;text-align: center; } }input::-webkit-outer-spin-button, input::-webkit-inner-spin-button { appearance: none; margin: 0; } }</style>

具體實現邏輯:主要實現以上幾個鍵盤事件操作。

<script> export default { data() { return {// 存放粘貼進來的數字pasteResult: [], }; }, props: [’code’], computed: { input() {// code 是父組件傳進來的默認值,必須是6位長度的數組,這里就不再做容錯判斷處理// 最后空數組是默認值return this.code || this.pasteResult.length === 6 ? this.pasteResult : [’’, ’’, ’’, ’’, ’’, ’’] } }, methods: { // 解決一個輸入框輸入多個字符 inputEvent(e) {var index = e.target.dataset.index * 1;var el = e.target;this.$set(this.input, index, el.value.slice(0, 1)) }, keydown(e) {var index = e.target.dataset.index * 1;var el = e.target;if (e.key === ’Backspace’) { if (this.input[index].length > 0) { this.$set(this.input, index, ’’) } else { if (el.previousElementSibling) { el.previousElementSibling.focus() this.$set(this.input, index - 1, ’’) } }} else if (e.key === ’Delete’) { if (this.input[index].length > 0) { this.$set(this.input, index, ’’) } else { if (el.nextElementSibling) { this.$set(this.input, index = 1, ’’) } } if (el.nextElementSibling) { el.nextElementSibling.focus() }} else if (e.key === ’Home’) { el.parentElement.children[0] && el.parentElement.children[0].focus()} else if (e.key === ’End’) { el.parentElement.children[this.input.length - 1] && el.parentElement.children[this.input.length - 1].focus()} else if (e.key === ’ArrowLeft’) { if (el.previousElementSibling) { el.previousElementSibling.focus() }} else if (e.key === ’ArrowRight’) { if (el.nextElementSibling) { el.nextElementSibling.focus() }} else if (e.key === ’ArrowUp’) { if (this.input[index] * 1 < 9) { this.$set(this.input, index, (this.input[index] * 1 + 1).toString()); }} else if (e.key === ’ArrowDown’) { if (this.input[index] * 1 > 0) { this.$set(this.input, index, (this.input[index] * 1 - 1).toString()); }} }, keyup(e) {var index = e.target.dataset.index * 1;var el = e.target;if (/Digit|Numpad/i.test(e.code)) { this.$set(this.input, index, e.code.replace(/Digit|Numpad/i, ’’)); el.nextElementSibling && el.nextElementSibling.focus(); if (index === 5) { if (this.input.join(’’).length === 6) { document.activeElement.blur(); this.$emit(’complete’, this.input); } }} else { if (this.input[index] === ’’) { this.$set(this.input, index, ’’); }} }, mousewheel(e) {var index = e.target.dataset.index;if (e.wheelDelta > 0) { if (this.input[index] * 1 < 9) { this.$set(this.input, index, (this.input[index] * 1 + 1).toString()); }} else if (e.wheelDelta < 0) { if (this.input[index] * 1 > 0) { this.$set(this.input, index, (this.input[index] * 1 - 1).toString()); }} else if (e.key === ’Enter’) { if (this.input.join(’’).length === 6) { document.activeElement.blur(); this.$emit(’complete’, this.input); }} }, paste(e) {// 當進行粘貼時e.clipboardData.items[0].getAsString(str => { if (str.toString().length === 6) { this.pasteResult = str.split(’’); document.activeElement.blur(); this.$emit(’complete’, this.input); }}) } }, mounted() { // 等待dom渲染完成,在執行focus,否則無法獲取到焦點 this.$nextTick(() => {this.$refs.firstinput.focus() }) }, }</script>

如果你發現了bug,或者有優化空間,歡迎你的指正和建議。我會隨時更新到原代碼當中,分享給大家。

到此這篇關于vue實現一個6個輸入框的驗證碼輸入組件的文章就介紹到這了,更多相關vue實現輸入框的驗證碼輸入組件內容請搜索好吧啦網以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持好吧啦網!

標簽: Vue
相關文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
女主播福利一区| 亚洲欧美久久久| 欧美特黄一区| 亚洲激情久久| 视频在线观看国产精品| 热久久免费视频| 亚洲精品大全| 麻豆精品久久| 国产精品yjizz视频网| 视频在线不卡免费观看| 免费观看亚洲| 久久不射中文字幕| 国产精品久久久久久久久久白浆 | 色综合视频一区二区三区日韩| 中文字幕中文字幕精品| 国产精品久久久久毛片大屁完整版| 精品一区av| 亚洲成人精品| 久久国产精品久久久久久电车| 91亚洲精品在看在线观看高清| 国产精品sm| 高潮一区二区| 午夜在线精品偷拍| 国产精品videossex| 久久久亚洲一区| 亚洲一区二区免费看| 奇米777国产一区国产二区| 动漫av一区| 日韩视频一区| 欧美日本精品| 久久中文字幕av| 国产亚洲字幕| 国产精品7m凸凹视频分类| 欧美在线91| 国产一在线精品一区在线观看| 久久精品一本| 免费在线观看一区二区三区| 老司机精品在线| 国产视频一区三区| 国产免费av一区二区三区| 欧美三级精品| 欧美日韩中文| 黑丝一区二区三区| 久久精品毛片| 亚洲va久久久噜噜噜久久| 女生影院久久| 欧美午夜三级| 欧美一级专区| 久久久久久久久99精品大| 国产三级精品三级在线观看国产| 欧美午夜不卡| 蜜桃av在线播放| 国产日韩欧美一区二区三区在线观看| 蜜桃一区二区三区| 美女久久99| 只有精品亚洲| 久久男女视频| 精品中国亚洲| 欧美亚洲tv| 99成人在线| 99久久久久久中文字幕一区| 国产极品嫩模在线观看91精品| 爽好久久久欧美精品| 涩涩涩久久久成人精品| 99国产精品久久久久久久| 日韩欧美一区二区三区免费看| 日本久久一区| 蜜桃免费网站一区二区三区| 久久久久99| 高清一区二区三区av| 国产亚洲第一伦理第一区| 免费黄网站欧美| 欧美日韩四区| 国产国产精品| 久久在线视频免费观看| 88xx成人免费观看视频库| 国产精品一区2区3区| 奇米亚洲欧美| 18国产精品| 欧美日韩精品一区二区三区在线观看| 亚洲精品婷婷| 一区二区三区四区在线观看国产日韩| 欧美福利一区| 日韩精品欧美激情一区二区| 国产成人a视频高清在线观看| 国产精品日韩精品中文字幕| 国产亚洲一区二区三区不卡| 日本va欧美va精品发布| 日韩黄色在线观看| 婷婷亚洲精品| 亚洲精品国产日韩| 中文字幕av一区二区三区四区| 亚洲一区区二区| 蜜臀a∨国产成人精品| 亚洲精品欧美| 国产欧美在线观看免费| 国产欧美三级| 久久亚洲资源中文字| 精品国产鲁一鲁****| 免费日韩成人| 精品国内亚洲2022精品成人| 福利片在线一区二区| 日韩免费看片| 狠狠爱成人网| 亚洲精品成人一区| 国产欧美日韩免费观看| 久久精品亚洲一区二区| 91一区二区三区四区| 亚洲h色精品| 日韩影院免费视频| 日本不卡视频在线观看 | 四虎4545www国产精品 | 国产欧美日韩精品一区二区三区| 欧美日韩va| 麻豆国产欧美日韩综合精品二区| 成人午夜亚洲| 美女久久久久| 亚洲ww精品| 久久精品亚洲| 亚洲成人二区| 亚洲一区欧美| 国产精品99精品一区二区三区∴| 精品国产美女a久久9999| 久久影视一区| 亚洲精品欧洲| 国产精品jk白丝蜜臀av小说| 国产一区二区三区四区五区| 成人羞羞在线观看网站| 亚洲少妇一区| 日韩精品亚洲aⅴ在线影院| 久久亚洲资源中文字| 在线日韩欧美| 天堂va欧美ⅴa亚洲va一国产| 国产精品主播| 香蕉成人av| 亚洲日本在线观看视频| 精品一区av| 视频一区二区不卡| 国产精品激情| 日韩精品免费一区二区在线观看| 亚洲欧洲午夜| 国产精品亚洲片在线播放| 中文字幕系列一区| 亚洲精品进入| 亚洲人成在线网站| 日本伊人久久| 久久久久国产一区二区| 日韩av中文字幕一区| 欧美日中文字幕| 国产精品片aa在线观看| 亚洲精品888| 精品中国亚洲| 综合色一区二区| 久久久久久免费视频| 国产精品午夜一区二区三区| 99久久亚洲精品蜜臀| 国产欧美日韩影院| 在线视频亚洲| 日韩电影二区| 国产精品亚洲片在线播放| 好看不卡的中文字幕| 精品一区二区三区中文字幕| 免费在线视频一区| 99视频精品全国免费| 欧美1区二区| 亚洲欧洲日韩| 激情91久久| 中文字幕色婷婷在线视频| 日韩黄色免费网站| 99国产精品99久久久久久粉嫩| 国产欧美日韩精品高清二区综合区| 亚洲手机视频| 成人亚洲一区| 91亚洲精品在看在线观看高清| 亚洲精品小说| 电影亚洲精品噜噜在线观看| 国产精品午夜一区二区三区| 中文字幕av亚洲精品一部二部| 国产二区精品| 欧美日韩精品免费观看视完整| 麻豆精品一区二区综合av| 清纯唯美亚洲综合一区| 免费成人性网站| 婷婷色综合网| 欧美特黄一级大片| 精品99在线| 欧美国产专区| 国产精品一区亚洲| 国产三级精品三级在线观看国产| 中文字幕日韩欧美精品高清在线| 91久久中文| 夜夜精品视频| 99在线精品视频在线观看| 免费久久久久久久久| 久久久精品网| 国户精品久久久久久久久久久不卡 | 亚洲久久一区| 免费的成人av| 亚洲小说春色综合另类电影| 免费在线成人网|