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

vue前端el-input輸入限制輸入位數(shù)及輸入規(guī)則

 更新時(shí)間:2023年09月11日 08:47:26   作者:穆寧!  
這篇文章主要給大家介紹了關(guān)于vue前端el-input輸入限制輸入位數(shù)及輸入規(guī)則的相關(guān)資料,文中通過(guò)代碼介紹的介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用vue具有一定的參考借鑒價(jià)值,需要的朋友可以參考下

前言

前端兼容el-input輸入時(shí),僅允許輸入負(fù)號(hào)、數(shù)字以及小數(shù)點(diǎn),且限制整數(shù)位數(shù)以及小數(shù)位數(shù),且不允許輸入除第一個(gè)負(fù)號(hào)以外的其他符號(hào)

邏輯梳理

1、使用element-ui插件的el-input組件作為頁(yè)面元素,為其綁定input事件(我這里是在表格里使用slot插入的inpu元素,所以傳入?yún)?shù)使用scope傳入)

2、綁定輸入事件,傳參給工具函數(shù),等待返回值返回

3、傳入?yún)?shù)從左到右依次為:

輸入框正在輸入的值e整數(shù)部分最大輸入位數(shù)限制intMax(number類型):控制最大輸入幾位,超過(guò)此值不可繼續(xù)輸入

小數(shù)部分最大輸入位數(shù)限制dotMax(number類型):同上

輸入框綁定的對(duì)象row:用于對(duì)象綁定

綁定對(duì)象上綁定此輸入框的鍵值name:用于數(shù)據(jù)更新

說(shuō)明:工具函數(shù)內(nèi)部 return ‘0’ 的內(nèi)容可以根據(jù)需求return不同數(shù)據(jù),這里return
0便于判斷后續(xù)操作是否執(zhí)行,如果輸入不合法字符,直接干掉不合法字符,不需要執(zhí)行后面邏輯了

代碼

html:

<el-input
   autofocus
   v-if="scope.row.isActive == true"
   type="text"
   class="column-remark-input"
   v-model.trim="scope.row.adjustAmount"
   placeholder="調(diào)整金額(若有)"
   @blur="numberBlur(scope)"
   @input="inputFocus($event, scope.row, scope)"
></el-input>

工具函數(shù):

/* 輸入時(shí) */
		inputFocus(e, row, scope) {
            var num = this.inputLimit(e, 12, 2, row, 'adjustAmount')
            console.log("?? >> inputFocus >> num:", num)
		},
/* 
            限制輸入框只可以輸入數(shù)字以及負(fù)號(hào)
            且整數(shù)位最大可輸入intMax位
            小數(shù)位最大可輸入dotMax位
            name:  綁定對(duì)象鍵值
            intMax:整數(shù)最大位數(shù)
            dotMax:小數(shù)最大位數(shù)
        */
        inputLimit(num, intMax, dotMax, row, name) {
            // 類型過(guò)濾
            if(num === undefined || num === null) {
                return '0'
            }
            var next = num + ''
            /* 如果有單位 */
            /* 單位只允許是-,且在第一位 */
            /* 第一位不是-號(hào) 則過(guò)濾掉所有多余符號(hào)*/
            var hasCompany = ( next.indexOf('-') === 0 ) ? true : false
            var res = next.match(/-/g)
            if(hasCompany && res && res.length === 1) {
                /* 負(fù)號(hào)在第一位,且只有一個(gè)負(fù)號(hào),正常流程*/
                /* 拿走第一個(gè)負(fù)號(hào)以后需,不允許有其他任何負(fù)號(hào) */
                next = next.substring(1)
                /* 如果有小數(shù) */
                if(next.indexOf('.') !== -1) {
                    var temp = next.split('.')
                    /* 保證 整數(shù)部分、小數(shù)部分 全部沒(méi)有怪異符號(hào)在中間 */
                    var intNum = temp[0].replace(/[^0-9]/g, "") 
                    var dotNum = temp[1].replace(/[^0-9]/g, "")
                    next = intNum + '.' + dotNum
                    this.$set(row, name, next)
                }else{
                    /* 如果沒(méi)有小數(shù) */
                    next = next.replace(/[^0-9]/g, "")
                    this.$set(row, name, next)
                }
            }else{
                /* 負(fù)號(hào)不在第一位,或者有其他怪異符號(hào) */
                if(next.indexOf('.') !== -1) {
                    /* 如果有小數(shù) */
                    var temp = next.split('.')
                    /* 保證 整數(shù)部分、小數(shù)部分 全部沒(méi)有怪異符號(hào)在中間 */
                    var intNum = temp[0].replace(/[^0-9]/g, "") 
                    var dotNum = temp[1].replace(/[^0-9]/g, "")
                    var final = (hasCompany ? '-' : '' ) + intNum + '.' + dotNum
                    this.$set(row, name, final)
                    return '0'
                }else{
                    /* 如果沒(méi)有小數(shù) */
                    var final = next.replace(/[^0-9]/g, "")
                    this.$set(row, name, final)
                    return '0' // 這里可以根據(jù)需求return不同數(shù)據(jù),這里return 0便于判斷后續(xù)操作是否執(zhí)行,如果輸入不合法字符,直接干掉不合法字符,不需要執(zhí)行后面邏輯了
                }
            }
            if(next !== '0' && Number(next)) {
                var resNum = ''
                /* 如果有小數(shù) */
                if(next.indexOf('.') !== -1) {
                    var arr = next.split('.')
                    arr[0] = arr[0].length > intMax ? arr[0].substring(0, intMax) : arr[0]
                    if(arr[1] !== '') {
                        arr[1] = arr[1].length > dotMax ? arr[1].substring(0, dotMax) : arr[1]
                        var result = arr.join('.')
                        resNum = Number(hasCompany ? ('-' + result) : result).toFixed(arr[1].length)
                    }else{
                        var result = arr.join('.')
                        resNum = hasCompany ? ('-' + result) : result
                    }
                    this.$set(row, name, resNum)
                    return resNum
                }else{
                    /* 如果沒(méi)小數(shù) 一串?dāng)?shù)字,只需要限制位數(shù)*/
                    resNum = num.length > intMax ? num.substring(0, intMax) : num
                    this.$set(row, name, resNum)
                }
                return resNum
            }
        },

總結(jié) 

到此這篇關(guān)于vue前端el-input輸入限制輸入位數(shù)及輸入規(guī)則的文章就介紹到這了,更多相關(guān)vue前端el-input輸入限制內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Vue3中emit傳值的具體使用

    Vue3中emit傳值的具體使用

    Emit是Vue3中另一種常見(jiàn)的組件間傳值方式,它通過(guò)在子組件中觸發(fā)事件并將數(shù)據(jù)通過(guò)事件參數(shù)傳遞給父組件來(lái)實(shí)現(xiàn)數(shù)據(jù)傳遞,本文就來(lái)介紹一下Vue3 emit傳值,感興趣的可以了解一下
    2023-12-12
  • elementui源碼學(xué)習(xí)仿寫el-link示例詳解

    elementui源碼學(xué)習(xí)仿寫el-link示例詳解

    這篇文章主要為大家介紹了elementui源碼學(xué)習(xí)仿寫el-link示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪
    2022-12-12
  • Vue3.5中響應(yīng)式Props解構(gòu)的編譯原理

    Vue3.5中響應(yīng)式Props解構(gòu)的編譯原理

    在Vue3.5版本中,響應(yīng)式Props的解構(gòu)功能正式轉(zhuǎn)正,該功能允許即使在解構(gòu)后也不丟失響應(yīng)性,文通過(guò)編譯階段的處理,如何保持解構(gòu)后的props變量仍保持響應(yīng)性,編譯過(guò)程中的defineProps宏函數(shù)處理,通過(guò)AST和上下文操作實(shí)現(xiàn)變量替換,從而讓解構(gòu)后的變量在運(yùn)行時(shí)維持響應(yīng)式狀態(tài)
    2024-09-09
  • 詳解vue-router的Import異步加載模塊問(wèn)題的解決方案

    詳解vue-router的Import異步加載模塊問(wèn)題的解決方案

    這篇文章主要介紹了詳解vue-router的Import異步加載模塊問(wèn)題的解決方案,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2020-05-05
  • elementUI el-form 數(shù)據(jù)無(wú)法賦值且不報(bào)錯(cuò)解決方法

    elementUI el-form 數(shù)據(jù)無(wú)法賦值且不報(bào)錯(cuò)解決方法

    本文主要介紹了elementUI el-form 數(shù)據(jù)無(wú)法賦值且不報(bào)錯(cuò)解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-12-12
  • vue項(xiàng)目前端知識(shí)點(diǎn)整理【收藏】

    vue項(xiàng)目前端知識(shí)點(diǎn)整理【收藏】

    本文是小編給大家收藏整理的關(guān)于vue項(xiàng)目前端知識(shí)點(diǎn),非常不錯(cuò),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-05-05
  • Vue超詳細(xì)講解重試機(jī)制示例

    Vue超詳細(xì)講解重試機(jī)制示例

    這篇文章主要介紹了Vue重試機(jī)制示例,重試指的是當(dāng)加載出錯(cuò)時(shí),有能力重新發(fā)起加載組件的請(qǐng)求。異步組件加載失敗后的重試機(jī)制,與請(qǐng)求服務(wù)端接口失敗后的重試機(jī)制一樣
    2023-01-01
  • vue 單元測(cè)試初探

    vue 單元測(cè)試初探

    這篇文章主要介紹了vue 單元測(cè)試的相關(guān)資料,幫助大家更好的理解和學(xué)習(xí)使用vue框架,感興趣的朋友可以了解下
    2021-04-04
  • Vue 自定義指令實(shí)現(xiàn)一鍵 Copy功能

    Vue 自定義指令實(shí)現(xiàn)一鍵 Copy功能

    指令 (Directives) 是帶有 v- 前綴的特殊特性。這篇文章主要介紹了Vue 自定義指令實(shí)現(xiàn)一鍵 Copy的功能,需要的朋友可以參考下
    2019-09-09
  • 詳解Vue 動(dòng)態(tài)組件與全局事件綁定總結(jié)

    詳解Vue 動(dòng)態(tài)組件與全局事件綁定總結(jié)

    這篇文章主要介紹了詳解Vue 動(dòng)態(tài)組件與全局事件綁定總結(jié),從示例中發(fā)現(xiàn)并解決問(wèn)題,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-11-11

最新評(píng)論

精河县| 湟源县| 井研县| 乌拉特前旗| 宜章县| 永春县| 龙游县| 叙永县| 隆尧县| 仙居县| 马龙县| 同仁县| 娄烦县| 集贤县| 楚雄市| 文安县| 吴旗县| 山阳县| 彰化县| 田东县| 普安县| 平原县| 太白县| 莆田市| 普格县| 波密县| 怀集县| 临泉县| 林口县| 庆安县| 栖霞市| 正镶白旗| 桐城市| 綦江县| 武宣县| 晴隆县| 成都市| 封开县| 杨浦区| 峡江县| 潼关县|