반응형
프로젝트 마무리로 핸드폰번호, 생년월일 정규식으로 유효성 검사를 하는데 - 하이픈을 수동으로 입력해야해서 불편함을 느꼈다. 그래서 입력된 값의 길이와 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 += '-';
}
}
핸드폰 번호도 동일하게 설정해 주기 - !
반응형
'Javascript' 카테고리의 다른 글
[JavaScript] 콘솔로그 전체 보기 / console.log more items.. 전체 펼쳐보기 (0) | 2022.04.21 |
---|---|
[JavaScript] 객체 복사하기 <옅은 복사 vs 깊은 복사> (0) | 2022.02.19 |
[JavaScript] 이메일, 핸드폰 번호, 생년월일 유효성 검사 (정규식) (0) | 2021.06.28 |
[JavaScript] Promise 값 가져오기 async await 사용 (0) | 2021.06.24 |
[JavaScript] 팝업창 띄우는 두 가지 방법 (0) | 2021.06.23 |