반응형
Vue.js의 지시어를 사용하여 숫자 값만 수락하는 입력 필드
나는 Vue.js에 처음 와.숫자만 사용할 수 있는 입력 필드를 원하며, 사용자가 다른 값을 입력하면 빈 문자열로 대체된다.따라서 이 필드 viz 'numericOnly'에 사용자 지정 지시어를 추가하고자 한다.
사용자 지정 지시어 코드:
Vue.directive('numericOnly', {
bind (el, binding, vnode) {
regex = /^[0-9]*$/
if(!regex.test(el.value)){
el.value = el.value.slice(0, -1)
}
}
})
여기 내 템플릿이 있다.
<input v-numericOnly name="mobileNumber" placeholder="Mobile Number" >
그러나 입력 필드가 DOM에 바인딩되어 있는 한 번만 실행된다.
이 문제를 해결하는 것을 도와줘.미리 고맙다.
당신의 지시는 경청해야 한다.keyup
필요한 사항을 달성할 수 있는 입력 요소:
Vue.directive('numericOnly', {
bind(el) {
el.addEventListener('keyup', () => {
let regex = /^[0-9]*$/
if (!regex.test(el.value)) {
el.value = el.value.slice(0, -1)
}
})
}
})
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()
}
})
}
})
반응형
'Programing' 카테고리의 다른 글
Java에서 파일을 복사하는 표준 간결한 방법? (0) | 2022.04.24 |
---|---|
Axios 인터셉터 토큰 헤더가 구성에는 있지만 요청 헤더에는 없음 (0) | 2022.04.23 |
.map 파일에서 메모리 레이아웃을 그래픽으로 표시하는 방법 (0) | 2022.04.23 |
Java에서 돈으로 사용할 데이터 유형을 선택하십시오. (0) | 2022.04.23 |
Java에서 System variable 값을 얻는 방법은? (0) | 2022.04.23 |