input의 type 속성을 number로 지정하여 한글 입력을 막았지만, +, -, . 의 기호가 입력되어 당황스러웠다면 드루와~
물론, 내 이야기다!
숫자 외 기호 등의 입력을 방지하는 방법은 정규 표현식을 활용할 수도 있지만, 내 경우에는 정규 표현식으로 잘 방어가 되지 않았기 때문에 다른 방법을 소개하려고 한다.
키보드 이벤트로 해당 기호 입력을 방지하는 방법인데, 바로 코드를 보자! (참고로 React 사용중..)
const AgeInput = () => {
const handleKeyDown = useCallback((event) => {
if (event.key === '-' || event.key === '+' || event.key === '.') event.preventDefault()
}, [])
return (
<input type="number" onKeyDown={handleKeyDown} />
)
}
키보드 이벤트를 콘솔창에 찍어보면 keyCode도 있는데 나는 그냥 key값을 이용했다.
키보드 이벤트의 key 값이 -, +, . 일 경우, event.preventDefault()를 해주는데 이는 이벤트의 기본 동작을 실행하지 않게 해주기 때문에 해당 기호를 입력하지 못하도록 할 수 있다.
정규표현식으로 원하는대로 잘 작동하지 않는다면 이 방법을 해보길 추천!
Event.preventDefault() - Web API | MDN
Event 인터페이스의 preventDefault() 메서드는 어떤 이벤트를 명시적으로 처리하지 않은 경우, 해당 이벤트에 대한 사용자 에이전트의 기본 동작을 실행하지 않도록 지정합니다.
developer.mozilla.org
'천천히 배움, > Front-End' 카테고리의 다른 글
[Javascript] 모바일 safari, 삼성 브라우저 100vh 이슈 해결 (0) | 2022.01.22 |
---|---|
[JavaScript] iOS, input type="number"일 때 숫자 키패드 띄우기 (0) | 2022.01.19 |
[React] Flex Component 만들기 (feat, MUI-Stack) (0) | 2021.11.17 |
[Network] REST API, 그리고 POST와 PUT (4) | 2021.10.04 |
[Highcharts] scatter 그래프 - 구간에 따른 marker 색상 구분 (0) | 2021.09.28 |