最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue 輸入電話號碼自動按3-4-4分割功能的實現(xiàn)代碼

 更新時間:2020年04月30日 17:16:02   作者:吃茶去吖  
這篇文章主要介紹了vue 輸入電話號碼自動按3-4-4分割功能的實現(xiàn)代碼,本文通過實例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下

輸入框綁定

<input class="inputBox" type="phone" 
placeholder=" 請輸入手機號" 
maxlength="13" v-model="phoneNum"/>

監(jiān)聽事件,每次號碼發(fā)生改變時觸發(fā)
大體的邏輯是:先比較號碼變化前后的長度,判斷是輸入還是刪除,如果是輸入的話,利用正則表達式改變號碼格式。

watch: {
 phoneNum (newValue, oldValue) { // 監(jiān)聽電話號碼
 this.phoneNum = newValue.length > oldValue.length ? newValue.replace(/\s/g, '').replace(/(\d{3})(\d{0,4})(\d{0,4})/, '$1 $2 $3') : this.phoneNum.trim()
 if (this.phoneNum.length === 13) {
 // 驗證/保存的手機號碼,去除空格
 this.state.checkPhoneNum = this.phoneNum.replace(/\s/g, '')
 console.log('輸入的電話號碼是:', this.state.checkPhoneNum)
 } 
 }
 },

效果示意

在這里插入圖片描述

附錄:下面看下vue手機號按344分隔,銀行卡號每4位空格分隔

實現(xiàn)效果:

1. 手機號輸入/粘貼時,不允許輸入數(shù)字外的其它字符,按344分隔,最大輸入11位數(shù)字

2. 銀行卡號輸入/粘貼時,不允許輸入數(shù)字外的其它字符,每四位用空格分隔

代碼:

<template>
 <div class="form">
 <p>
 手機號:
 <input v-model="mobile" type="tel" ref="mobile" maxlength="13" @keyup="inputMobile" @paste="inputMobile" />
 </p>
 <p>
 銀行卡號:
 <input v-model="card" type="text" @keyup="inputCard" @paste="inputCard" />
 </p>
 </div>
</template>

js:

<script>
 export default {
 data() {
 return {
 mobile: '',
 card: ''
 }
 },
 methods: {
 inputMobile() {
 let value = this.mobile.replace(/\D/g, '').substr(0, 11) // 不允許輸入非數(shù)字字符,超過11位數(shù)字截取前11位
 let len = value.length
 if (len > 3 && len < 8) {
  value = value.replace(/^(\d{3})/g, '$1 ')
 } else if (len >= 8) {
  value = value.replace(/^(\d{3})(\d{4})/g, '$1 $2 ')
 }
 this.mobile = value
 },
 inputCard() {
 this.card = this.card.replace(/\D/g, '') // 不允許輸入非數(shù)字字符
 this.card = this.card.replace(/(\d{4})(?=\d)/g, '$1 ') // 4位一組,非獲取匹配最后一組數(shù)字,避免刪除到空格時會馬上自動補齊
 }
 }
 } 
</script>

上述方案即可實現(xiàn)基本效果,但如果從中間開始刪除或添加內(nèi)容時,光標會自動跑到最后,如下:

若想光標留在刪除/添加內(nèi)容位置,需要設置光標位置:

修改js如下:

<script>
 export default {
 data () {
 return {
 mobile: '',
 card: ''
 }
 },
 methods: {
 inputMobile (e) {
 this.formatMobile(e)
 this.mobile = this.$refs.mobile.value
 },
 formatMobile (e) {
 let val = this.$refs.mobile.value // 不可直接用this.mobile,第一方便提取該方法降低代碼耦合度,第二直接用this.mobile,在輸入漢字時按下shift按鍵會導致無法再輸入和刪除內(nèi)容
 let selStart = this.$refs.mobile.selectionStart // 選中區(qū)域左邊界位置
 let mobileLen = val.length
 let value = this.getValue(e, val).substr(0, 11) // 獲取輸入/粘貼內(nèi)容,并截取前11位
 let len = value.length
 if (len > 3 && len < 8) {
  value = value.replace(/^(\d{3})/g, '$1 ')
 } else if (len >= 8) {
  value = value.replace(/^(\d{3})(\d{4})/g, '$1 $2 ')
 }
 this.$refs.mobile.value = value
 if (selStart !== mobileLen) {
  if (selStart === 3) {
  selStart++
  }
  // 設置光標位置
  this.$refs.mobile.selectionStart = this.$refs.mobile.selectionEnd = selStart
 }
 },
 getValue(e, val) {
 let value = ''
 if (e.type === 'keyup') {
  value = val.replace(/\D/g, '')
 } else if (e.type === 'paste') {
  // window.clipboardData:IE瀏覽器獲取剪貼板數(shù)據(jù)對象
  // event.clipboardData:Chrome, Firefox, Safari獲取剪貼板數(shù)據(jù)對象
  let clipboardData = event.clipboardData || window.clipboardData;
  value = clipboardData.getData('Text'); // 獲取剪貼板text格式的數(shù)據(jù)
  value = value.replace(/\D/g, '')
 }
 return value
 }
 }
 }
</script>

未實現(xiàn):

不允許粘貼非數(shù)字內(nèi)容到輸入框還未實現(xiàn),改為了提交時校驗,如果有比較好的解決方案望大家提出

到此這篇關(guān)于vue 輸入電話號碼自動按3-4-4分割功能的實現(xiàn)代碼的文章就介紹到這了,更多相關(guān)vue輸入電話號碼自動分割內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vue實現(xiàn)頁面渲染時候執(zhí)行某需求的示例代碼

    vue實現(xiàn)頁面渲染時候執(zhí)行某需求的示例代碼

    本文主要介紹了vue實現(xiàn)頁面渲染時候執(zhí)行某需求,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2024-05-05
  • vue自定義加載指令v-loading占位圖指令v-showimg

    vue自定義加載指令v-loading占位圖指令v-showimg

    這篇文章主要為大家介紹了vue自定義加載指令和v-loading占位圖指令v-showimg的示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • 詳解vuex 中的 state 在組件中如何監(jiān)聽

    詳解vuex 中的 state 在組件中如何監(jiān)聽

    本篇文章主要介紹了詳解vuex 中的 state 在組件中如何監(jiān)聽,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-05-05
  • vue通過點擊事件讀取音頻文件的方法

    vue通過點擊事件讀取音頻文件的方法

    最近做項目遇到這樣的一個需求,通過select元素來選擇音頻文件的名稱,點擊按鈕可以進行試聽。接下來通過本文給大家介紹vue項目中通過點擊事件讀取音頻文件的方法,需要的朋友可以參考下
    2018-05-05
  • vue3.0 自適應不同分辨率電腦的操作

    vue3.0 自適應不同分辨率電腦的操作

    這篇文章主要介紹了vue3.0 自適應不同分辨率電腦的操作,本文給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2021-02-02
  • Vue頁面渲染中key的應用實例教程

    Vue頁面渲染中key的應用實例教程

    這篇文章主要給大家介紹了關(guān)于Vue頁面渲染中key的應用的相關(guān)資料,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-01-01
  • VUE實現(xiàn)分布式醫(yī)療掛號系統(tǒng)預約掛號首頁步驟詳情

    VUE實現(xiàn)分布式醫(yī)療掛號系統(tǒng)預約掛號首頁步驟詳情

    這篇文章主要為大家介紹了VUE實現(xiàn)分布式醫(yī)療掛號系統(tǒng)預約掛號首頁步驟詳情,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-04-04
  • vue3+elementplus前端生成圖片驗證碼完整代碼舉例

    vue3+elementplus前端生成圖片驗證碼完整代碼舉例

    在開發(fā)過程中有時候需要使用圖片驗證碼進行增加安全強度,在點擊圖片時更新新的圖片驗證碼,記錄此功能,以便后期使用,這篇文章主要給大家介紹了關(guān)于vue3+elementplus前端生成圖片驗證碼的相關(guān)資料,需要的朋友可以參考下
    2024-03-03
  • 搭建vue3項目以及按需引入element-ui框架組件全過程

    搭建vue3項目以及按需引入element-ui框架組件全過程

    element是基于vue.js框架開發(fā)的快速搭建前端的UI框架,下面這篇文章主要給大家介紹了關(guān)于搭建vue3項目以及按需引入element-ui框架組件的相關(guān)資料,文中通過圖文以及代碼介紹的非常詳細,需要的朋友可以參考下
    2024-02-02
  • Vue?UI框架的主題切換功能實現(xiàn)

    Vue?UI框架的主題切換功能實現(xiàn)

    在如今,很多網(wǎng)頁已經(jīng)可以手動切換明亮模式和黑暗模式,網(wǎng)頁的主題切換已經(jīng)成為了一個常用的需求,因此,本文將從常見框架的處理方式總結(jié)一些相關(guān)的操作,對vue?ui框架主題切換功能感興趣的朋友跟隨小編一起看看吧
    2022-12-12

最新評論

伊通| 广东省| 林周县| 承德县| 乌兰浩特市| 平泉县| 克拉玛依市| 静乐县| 静乐县| 文安县| 枣阳市| 肥乡县| 高州市| 双辽市| 临洮县| 东台市| 南宁市| 长子县| 仙游县| 温宿县| 高陵县| 阿拉善右旗| 惠东县| 高雄县| 邹平县| 梨树县| 诏安县| 盖州市| 靖江市| 北宁市| 大同市| 喀什市| 弥渡县| 荥阳市| 五原县| 隆林| 新晃| 凯里市| 临颍县| 资讯 | 金寨县|