分享一個PC端六格密碼輸入框寫法,pc輸入框寫法

如圖。愛掏網 - it200.com我們一般做商城類的項目不免會用到支付密碼輸入框,我研究了下并決定發上來,也當作是自己成長路上的一點小小的記錄。愛掏網 - it200.com本次介紹的是基于vue的項目

html:

template>
  div class='am_payPwd' :id="`ids_${id}`">
    input type="password"
      maxlength="1"
      @input="changeInput"
      @click="changePwd"
      v-model="pwdList[i]"
      @keyup="keyUp($event)"
      @keydown="oldPwdList = pwdList.length"
      class="shortInput"
      v-for="(v, i) in 6" :key="i">
  div>
template>

css:

.am_payPwd {
  display: inline-block;
  width: 242px;
  height: 40px;
  border: 1px solid #999;
  border-radius: 5px;
  padding: 10px 0;
  position: relative;
  margin-left: 1px;
  .shortInput {
    text-align: center;
    font-size: 20px;
    float: left;
    width: 40px;
    height: 20px;
    color: #333;
    outline: #ff0067;
    &:not(:last-child) {
      border-right: 1px solid #999;
    }
  }
}

js:

  data () {
    return {
      pwdList: [],
      oldPwdList: [],
      isDelete: false,
      ipt: ''
    }
  },
  props: {
    id: String, // 當一個頁面有多個密碼輸入框時,用id來區分
    default: '1'
  },
  mounted () {  
    this.ipt = document.querySelectorAll(`#ids_${this.id} .shortInput`)
  },
  methods: {
    keyUp (ev) {
      let index = this.pwdList.length
      if (!index) return
      if (ev.keyCode === 8) {
        this.isDelete = true
        if (this.oldPwdList === this.pwdList.length) {
          if (index === this.pwdList.length) {
            this.pwdList.pop()
          }
          index--
        } else {
          index > 0 && index--
        }
        this.ipt[index].focus()
      } else if (this.isDelete && index === this.pwdList.length && /^\d$/.test(ev.key)) {
        this.isDelete = false
        this.pwdList.pop()
        this.pwdList.push(ev.key)
        this.ipt[this.pwdList.length] && this.ipt[this.pwdList.length].focus()
      }
      this.$emit('getPwd', this.pwdList.join(''))
    },
    changePwd () {
      let index = this.pwdList.length
      index === 6 && index--
      this.ipt[index].focus()
    },
    changeInput () {
      let index = this.pwdList.length
      let val = this.pwdList[index - 1]
     if (!/[0-9]/.test(val)) { 
        this.pwdList.pop()            
        return       
      }
      if (!val) {
        this.pwdList.pop()
        index--
        if (index > 0) this.ipt[index - 1].focus()
      } else {
        if (index  6) this.ipt[index].focus()
      }
    }
  }

?

如有考慮不周的,請指出

?

每一次的記錄,都是向前邁進的一步
聲明:所有內容來自互聯網搜索結果,不保證100%準確性,僅供參考。如若本站內容侵犯了原著者的合法權益,可聯系我們進行處理。
發表評論
更多 網友評論0 條評論)
暫無評論

返回頂部

主站蜘蛛池模板: 久久久久久人妻一区精品| 久久99视频精品| 国产美女a做受大片观看| 精品无人区麻豆乱码1区2区 | 成年丰满熟妇午夜免费视频| 91精品免费国产高清在线| 亚洲一区中文字幕在线电影网| 图片区精品综合自拍| 99免费在线观看视频| 制服丝袜自拍偷拍| 婷婷五月综合色中文字幕| 精品国产一区二区三区av片| 一级做a爱视频| 免费a级毛片无码av| 在线观看国产一区| 波多野结衣一区二区三区高清在线| 99在线精品免费视频九九视 | 亚洲图片中文字幕| 国产精品白浆在线观看无码专区| 欧美成人亚洲高清在线观看| 在线观看福利网站| 久久精品国产亚洲av麻豆| 国产一级毛片视频在线!| 小小在线观看视频www软件| 稚嫩娇小哭叫粗大撑破h| 999精品在线| 五月天婷婷精品免费视频| 国产jizzjizz免费看jizz| 妲己高h荡肉呻吟np| 欧美精品一区二区久久| 国美女福利视频午夜精品| 中日韩一区二区三区| 亚洲麻豆精品果冻传媒| 成人免费在线看片| 波多野结衣456| 青青草原综合久久大伊人| а√天堂中文最新版地址| 别急慢慢来在线观看| 国产精品亚洲片在线观看不卡| 欧美综合亚洲图片综合区| 香蕉99国内自产自拍视频|