Vue自定義指令實現input限制輸入正整數

2021-09-11 13:10:06 字數 1413 閱讀 1646

種一棵樹最好的時間是十年前,其次是現在。--誰說的不重要。

在做表單時,我們經常會遇到各種input輸入框,例如在設計填寫個數時,要求輸入正整數。

如果只是個別輸入框,那麼我們完全可以檢測input的keyup事件,在該事件裡對keyup事件進行操作即可

type="text" v-model="value" 

@keyup="value = value.length === 1 ? value.replace(/[^1-9]/g, '') : value.replace(/\d/g, '')" />

複製**

如果存在大量的要求輸入正整數,那就不好玩了

粉墨登場!

首先看下最終結果:

type="text" v-model="value" v-int/>

複製**

確認過的眼神,簡單到只需要新增指令 v-int即可實現,是不是心動的感覺?

新建js檔案,**如下

2. 註冊自定義指令,在main.js檔案中引入檔案,並註冊(圖中標註兩行**即可)

3. 起飛,在需要的地方輸入框使用該指令即可輕鬆實現。

如果把自己常用的小技能都採用自定義的方式進行維護,那豈不是美滋滋。

用了一段時間後,發現乙個,input的值被修改了,但vue裡顯示的還是舊值(例如輸入字母時失去焦點,值竟然沒有發生改變),這是個嚴重的bug呀...於是花了一上午找原因...找到解決方法:

import vue from 'vue'

export default () => else

trigger(input, 'input')

}input.onblur = function (e) else

trigger(input, 'input')}}

})}/*********************************

** fn: trigger

** intro: 參考

** author: zyx

*********************************/

const trigger = (el, type) =>

複製**

到這裡bug已經修復了。 該bug解決方法參考自:github.com/vuejs/discu…

vue自定義指令實現v model

指令是vue中非常重要的內容,了解指令的用法可以更好的服務於業務場景,方便高效,本文主要介紹指令的基本概念和用法,簡單模擬v model實現的功能。除了內建指令,vue.js 也允許註冊自定義指令。自定義指令提供一種機制將資料的變化對映為 dom 行為。可以用vue.directive id,def...

Vue自定義指令

vue有很多內建的指令,比如說v on,v model,v clock等等,每乙個指令會完成一定的功能,但是這些內建的指令總會有些侷限性,要是能夠自定義指令就好了 vue的自定義指令分類 全域性指令和區域性指令 vue指令的定義和用法 以全域性指令為例 1.語法 vue.directive 指令id...

vue自定義指令

自定義指令主要有兩種方式。一是在元件裡以directives的選項來自定義指令的內容。這樣的自定義指令是區域性的自定義指令,只在當前的元件裡面才能使用。script export default directives arr arr.join el.style.csstext arr script ...