반응형
비밀번호등을 받기 위해 숫자나 특정 단어 하나씩 입력하고 다음칸으로 이동하는 형태의 UI를 많이 접할 수 있습니다.
해당 포스팅에서는 하나의 Input태그마다 입력을 받으면 다음칸으로 이동하고 숫자만 받는 형태를 작성해보겠습니다.
단순하게 maxlength와 number값 타입을 지정하더라도 영문 'e' 또는 한글 자음 모음등이 입력되는 현상😓을 볼 수 있는데, 정규식과 사용할 수 있는 이벤트등을 활용하여 처리하였습니다.😋
좀 더 좋은 깔끔한 방식이 있다면 댓글 부탁드립니다!🙆♀️
<input type="tel" maxlength="1" min="0" max="9" onlyNumber>
$(function(){
$(document).on("keypress keyup keydown", "input[onlyNumber]", function(e){
console.log(e.which);
if(/[a-z|ㄱ-ㅎ|ㅏ-ㅣ|가-힣]/g.test(this.value)){ //한글 막기
e.preventDefault();
this.value = "";
}else if (e.which != 8 && e.which != 0 //영문 e막기
&& e.which < 48 || e.which > 57 //숫자키만 받기
&& e.which < 96 || e.which > 105){ //텐키 받기
e.preventDefault();
this.value = "";
}else if (this.value.length >= this.maxLength){ //1자리 이상 입력되면 다음 input으로 이동시키기
this.value = this.value.slice(0, this.maxLength);
if($(this).next("input").length > 0){
$(this).next().focus();
}else{
$(this).blur();
}
}
});
});
태그 input에 type을 tel로 한 이유는 모바일 환경에서 넘버패드로 먼저 동작하도록 하기 위해 처리하였고, input태그 내부에 onlyNumber라는 속성이 있으면 동일하게 동작하도록 처리하였습니다.
마지막 else if문에서 길이를 체크하고 maxlength값만큼 커지거나 같아지면 다음 input이 있는지 체크 후 자동으로 포커싱하는 스크립트입니다.
동작테스트는 아래 codePen⌨을 활용해주세요!
See the Pen Get one number by one by myhappyman (@myhappyman) on CodePen.
반응형
'WEB > jQuery' 카테고리의 다른 글
jQuery - blur, focusout 처리전에 click이벤트 발생시키기 (0) | 2021.05.21 |
---|---|
Jquery - 대한민국 지역 select 박스 제어 하기(권역, 수도권, 시, 시군구) (0) | 2021.02.18 |
jQuery - 드래그앤드롭(DragAndDrop)을 통한 파일 업로드 (0) | 2020.10.28 |
jQuery - checkbox 전체 선택, 해제 기능 및 단일 체크박스가 해제되었을때 전체 선택 해제 하기 (6) | 2020.10.27 |
jQuery - ajax xhr을 활용한 파일 업로드 진행 상태 확인하기 (0) | 2020.10.20 |