keypress 이벤트로 처리를 하면 한글로 바꾼후 타이핑하면 의미가 없게 된다.
input 이벤트에서 처리를 해야 IME 입력도 대처할 수 있다.
1. input 태그에 아래와 같이 이벤트를 건다.
<input type="text" oninput="onlyAlphaNum(this)" />
2. onlyAlphaNum 함수를 아래와 같이 작성한다.
function onlyAlphaNum(input) {
const regex = /^[A-Za-z0-9_]*$/; // 영문, 숫자, 언더바만 허용하는 정규 표현식
if (!regex.test(input.value)) {
// 입력된 값이 정규 표현식과 맞지 않으면 값을 수정
input.value = input.value.replace(/[^A-Za-z0-9_]/g, '');
}
}
위와 같이 하면 입력언어를 바꿔도 영문, 숫자, 언더바만 입력받는것이 동작하게 된다.
'웹프로그래밍' 카테고리의 다른 글
ASP.NET MVC - 비동기로 호출하여 JSON 객체를 받기 (1) | 2024.01.10 |
---|---|
첨부파일 용량제한 처리하기(html, javascript) (1) | 2024.01.04 |