Pul*_*wal 3 javascript vue.js vuejs2
我是Vue.js的新手。我想要一个仅接受数字的输入字段,如果用户输入任何其他值,它将被替换为空字符串。因此,我想向此字段添加自定义指令,即“ numericOnly”。
自定义指令的代码:
Vue.directive('numericOnly', {
bind (el, binding, vnode) {
regex = /^[0-9]*$/
if(!regex.test(el.value)){
el.value = el.value.slice(0, -1)
}
}
})
Run Code Online (Sandbox Code Playgroud)
这是我的模板:
<input v-numericOnly name="mobileNumber" placeholder="Mobile Number" >
Run Code Online (Sandbox Code Playgroud)
但是,当输入字段绑定到DOM时,它仅运行一次。
请帮助我找出这个问题。先感谢您。
您的指令应侦听keyupinput元素以实现所需的功能:
Vue.directive('numericOnly', {
bind(el) {
el.addEventListener('keyup', () => {
let regex = /^[0-9]*$/
if (!regex.test(el.value)) {
el.value = el.value.slice(0, -1)
}
})
}
})
Run Code Online (Sandbox Code Playgroud)
小智 5
import Vue from 'vue'
Vue.directive('numericOnly', {
bind(el, binding, vnode) {
el.addEventListener('keydown', (e) => {
if ([46, 8, 9, 27, 13, 110, 190].indexOf(e.keyCode) !== -1 ||
// Allow: Ctrl+A
(e.keyCode === 65 && e.ctrlKey === true) ||
// Allow: Ctrl+C
(e.keyCode === 67 && e.ctrlKey === true) ||
// Allow: Ctrl+X
(e.keyCode === 88 && e.ctrlKey === true) ||
// Allow: home, end, left, right
(e.keyCode >= 35 && e.keyCode <= 39)) {
// let it happen, don't do anything
return
}
// Ensure that it is a number and stop the keypress
if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) {
e.preventDefault()
}
})
}
Run Code Online (Sandbox Code Playgroud)
})
| 归档时间: |
|
| 查看次数: |
3430 次 |
| 最近记录: |