신청폼 작성 시 전화번호 자리수 고정하는 방법

신청폼 작성 시 전화번호 자리수 고정하는 방법

QA

신청폼 작성 시 전화번호 자리수 고정하는 방법

본문

상담 신청 폼에서 전화번호 영역 자리수를 11자리로 고정하고 싶습니다.


//js
<script>
function inputPhone() {
    let inputs = null;
 
    function rewrite( inp ) {
        let number_str = inp.value.replace(/-/g, "");
        let new_str = "";
       
        if(number_str.length > 6 && number_str.length <= 10) {
            new_str = number_str.substr(0, 3) + "-" + number_str.substr(3, 3) + "-" + number_str.substr(6);
        }
        else if(number_str.length > 10 && number_str.length >= 11) {
            new_str = number_str.substr(0, 3) + "-" + number_str.substr(3, 4) + "-" + number_str.substr(8);
        }
        else if(number_str.length > 3 && number_str.length <= 6) {
            new_str = number_str.substr(0, 3) + "-" + number_str.substr(3);
        }
        else {
            new_str = number_str;
        }
 
        inp.value = new_str;
    }
 
    function init() {
        inputs = document.querySelectorAll(".input-phone");
        inputs.forEach(function( inp, i ) {
            rewrite( inp );
            if(!inp.dataset.isevent) {
                inp.addEventListener("keyup", function( e ) {
                    rewrite( inp );
                });
                inp.addEventListener("blur", function( e ) {
                    rewrite( inp );
                });
                inp.dataset.isevent = "true"
            }
        });
    }
 
    (function() {
        init();
    })();
 
    return {
        init
    };
}
</script>
//html
 <dl>
                    <dt><?php echo $exhibition_counsel_data_list['hphone'];?></dt>
                    <dd>
                        <div class="input-box">
                            <input type="text" name="hphone" <?php echo $exhibition['e_data']['is_essential']['hphone']?'required':'' ;?>  itemname="<?php echo $exhibition_counsel_data_list['hphone'];?>" placeholder="전화번호를 입력해주세요" maxlength="13" class="input-number input-phone">
                        </div>
                    </dd>
                        </dl>
 
 

 

코드는 이렇고요

아래 코드는 제가 하다가 실패한거긴한데


// $('.input-phone').keyup(function(e) {
//     let content = $(this).val();
//     $('.input-phone').focusout(function(){
       
//     })
//     if(content.length < 11) {
//         $(this).val($(this).val().substring(0,11));
//         alert("연락처는 11자리여야 합니다.");
//         return false;
//     }
// })

얼럿창이라 그런가 input 에서 포커스가 벗어나면 무한정으로 경고창이 뜨네요 ㅠㅠ

어떻게 해야 좋을까요ㅕ?

이 질문에 댓글 쓰기 :

답변 3



// $('.input-phone').blur(function(){
//     let content = $(this).val();
// 
       if(content.length == 11) { 
           return;
       }else{
//         $(this).val($(this).val().substring(0,11));
//         alert("연락처는 11자리여야 합니다.");
//         return false;
//     }
// })

 

해당 input 에 keyup event 발생할때마다 자리수 체크해서 계속 alert 창 뜰거 같아 보이는데요...;;

하나 더... keyup event 안에 focusout event 가 있어야할 이유가 있나요...??


해당 input 에 포커스를 잃었을 때 자리수 확인하고 alert 창 띄우면 되지 않을까요...??

js에


} else if (number_str.length == 11) {
new_str = number_str.substr(0, 3) + "-" + number_str.substr(3, 4) + "-" + number_str.substr(7);

 

를 추가하시면 될꺼 같습니다.

그리고 input box 에 maxlength="11" 도 추가해주세요.

 

function rewrite( inp ) {
let number_str = inp.value.replace(/-/g, "");
let new_str = "";

if(number_str.length > 6 && number_str.length <= 10) {
new_str = number_str.substr(0, 3) + "-" + number_str.substr(3, 3) + "-" + number_str.substr(6);
} else if (number_str.length == 11) {
            new_str = number_str.substr(0, 3) + "-" + number_str.substr(3, 4) + "-" + number_str.substr(7);
        }
else if(number_str.length > 10 && number_str.length >= 11) {
new_str = number_str.substr(0, 3) + "-" + number_str.substr(3, 4) + "-" + number_str.substr(8);
}
else if(number_str.length > 3 && number_str.length <= 6) {
new_str = number_str.substr(0, 3) + "-" + number_str.substr(3);
} else {
new_str = number_str;
}

inp.value = new_str;
}
이렇게 넣어주었는데 반응이 없습니다 ㅠㅠ


    function rewrite(inp) {
        let number_str = inp.value.replace(/-/g, "");
        let new_str = "";
        if (number_str.length > 6 && number_str.length <= 10) {
            new_str = number_str.substr(0, 3) + "-" + number_str.substr(3, 3) + "-" + number_str.substr(6);
        } else if (number_str.length == 11) {
            new_str = number_str.substr(0, 3) + "-" + number_str.substr(3, 4) + "-" + number_str.substr(7);
        } else if (number_str.length > 3 && number_str.length <= 6) {
            new_str = number_str.substr(0, 3) + "-" + number_str.substr(3);
        } else {
            new_str = number_str;
        }
        inp.value = new_str;
    }

이렇게 하셔도 안되시나요?

답변을 작성하시기 전에 로그인 해주세요.
전체 125,048 | RSS
QA 내용 검색

회원로그인

(주)에스아이알소프트 / 대표:홍석명 / (06211) 서울특별시 강남구 역삼동 707-34 한신인터밸리24 서관 1404호 / E-Mail: admin@sir.kr
사업자등록번호: 217-81-36347 / 통신판매업신고번호:2014-서울강남-02098호 / 개인정보보호책임자:김민섭(minsup@sir.kr)
© SIRSOFT