Javascript
[JavaScript] 핸드폰번호, 생년월일 - 하이픈 자동 삽입하기 / Backspace keyCode
알로호모라
2021. 6. 28. 11:47
반응형
프로젝트 마무리로 핸드폰번호, 생년월일 정규식으로 유효성 검사를 하는데 - 하이픈을 수동으로 입력해야해서 불편함을 느꼈다. 그래서 입력된 값의 길이와 onkeyup 이라는 event를 사용하여 - 하이픈 자동 삽입하기까지 작성해보았다.
생년월일 하이픈 자동 생성하기
html 에 onkeyup = "함수(this)" 코드 추가하기
<div class="form-element">
<input id="userbirth" name="userbirth" onkeyup="birth_keyup(this)" type="text" class="form-cell form-textbox form-textbox-text form-field inputFocus generic-input-field joinJS">
<span aria-hidden="true" class="form-label" for="userbirth">
생년월일
</span>
</div>
html과 연결된 Javascript에 아래 코드 추가하기
// 생년월일 - 하이픈 자동 생성
function birth_keyup(obj){
let birth_len = obj.value.length;
if (event.keyCode==8){
obj.value = obj.value.slice(0,birth_len)
return 0;
}else if(birth_len==4 || birth_len==7){
obj.value += '-';
}
}
obj 로 들어오는 건 위 html 의 input 요소가 들어온다.
2020을 입력하면 onkeyup 함수가 키보드가 입력이 될 때 마다 (정확히 key가 누른 후 up 할 때) 해당 value의 길이가 4가 되면 '-'을 추가한다. 그런데 문제는 - 하이픈이 있는 상태에서 Backspace 키를 눌렀을 때 하이픈이 지워지고 다시 길이가 4가되어 - 하이픈이 추가된다. 그래서 event.keyCode==8 조건을 사용해 value값을 맞춰주었다.
*Backspace 키보드 keycode == 8
핸드폰 번호 하이픈 자동 생성하기
html 에 onkeyup = "함수(this)" 코드 추가하기
<div class="form-element">
<input id="mobile" name="mobile" type="tel" onkeyup="mobile_keyup(this)" maxlength='13' class="generic-input-field inputFocus phone-field form-textbox form-textbox-text joinJS">
<span class="form-label">전화번호</span>
</div>
html과 연결된 Javascript에 아래 코드 추가하기
// Mobile - 하이픈 자동 생성
function mobile_keyup(obj){
let mobile_len=obj.value.length;
console.log(mobile_len)
if(event.keyCode==8){
obj.value=obj.value.slice(0,mobile_len);
return 0;
}else if (mobile_len==3 || mobile_len==8){
obj.value += '-';
}
}
핸드폰 번호도 동일하게 설정해 주기 - !
반응형