테스트 사이트 - 개발 중인 베타 버전입니다

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

굼떠 1년 전 조회 23,893

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

</p>

<p>//js</p>

<p><script></p>

<p>function inputPhone() {</p>

<p>    let inputs = null;</p>

<p> </p>

<p>    function rewrite( inp ) {</p>

<p>        let number_str = inp.value.replace(/-/g, "");</p>

<p>        let new_str = "";</p>

<p>       </p>

<p>        if(number_str.length > 6 && number_str.length <= 10) {</p>

<p>            new_str = number_str.substr(0, 3) + "-" + number_str.substr(3, 3) + "-" + number_str.substr(6);</p>

<p>        }</p>

<p>        else if(number_str.length > 10 && number_str.length >= 11) {</p>

<p>            new_str = number_str.substr(0, 3) + "-" + number_str.substr(3, 4) + "-" + number_str.substr(8);</p>

<p>        }</p>

<p>        else if(number_str.length > 3 && number_str.length <= 6) {</p>

<p>            new_str = number_str.substr(0, 3) + "-" + number_str.substr(3);</p>

<p>        }</p>

<p>        else {</p>

<p>            new_str = number_str;</p>

<p>        }</p>

<p> </p>

<p>        inp.value = new_str;</p>

<p>    }</p>

<p> </p>

<p>    function init() {</p>

<p>        inputs = document.querySelectorAll(".input-phone");</p>

<p>        inputs.forEach(function( inp, i ) {</p>

<p>            rewrite( inp );</p>

<p>            if(!inp.dataset.isevent) {</p>

<p>                inp.addEventListener("keyup", function( e ) {</p>

<p>                    rewrite( inp );</p>

<p>                });</p>

<p>                inp.addEventListener("blur", function( e ) {</p>

<p>                    rewrite( inp );</p>

<p>                });</p>

<p>                inp.dataset.isevent = "true"</p>

<p>            }</p>

<p>        });</p>

<p>    }</p>

<p> </p>

<p>    (function() {</p>

<p>        init();</p>

<p>    })();</p>

<p> </p>

<p>    return {</p>

<p>        init</p>

<p>    };</p>

<p>}</p>

<p></script></p>

<p>//html</p>

<p> <dl></p>

<p>                    <dt><?php echo $exhibition_counsel_data_list['hphone'];?></dt></p>

<p>                    <dd></p>

<p>                        <div class="input-box"></p>

<p>                            <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"></p>

<p>                        </div></p>

<p>                    </dd></p>

<p>                        </dl></p>

<p> </p>

<p> </p>

<p>

 

코드는 이렇고요

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

</p>

<p>// $('.input-phone').keyup(function(e) {</p>

<p>//     let content = $(this).val();</p>

<p>//     $('.input-phone').focusout(function(){</p>

<p>       </p>

<p>//     })</p>

<p>//     if(content.length < 11) {</p>

<p>//         $(this).val($(this).val().substring(0,11));</p>

<p>//         alert("연락처는 11자리여야 합니다.");</p>

<p>//         return false;</p>

<p>//     }</p>

<p>// })</p>

<p>

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

어떻게 해야 좋을까요ㅕ?

댓글을 작성하려면 로그인이 필요합니다.

답변 3개

채택된 답변
+20 포인트
c
1년 전

</p>

<pre>
<code>// $('.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;
//     }
// })</code></pre>

<p>

 

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

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


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

로그인 후 평가할 수 있습니다

댓글을 작성하려면 로그인이 필요합니다.

M
1년 전

</p>

<p>    function rewrite(inp) {

        let number_str = inp.value.replace(/-/g, "");

        let new_str = "";</p>

<p>        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;

        }</p>

<p>        inp.value = new_str;

    }</p>

<p>

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

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

굼떠
1년 전
네 안되네여 coDribble님 답변주신 방법으로 해결했습니다. 시간내주셔서 감사합니다!

댓글을 작성하려면 로그인이 필요합니다.

M
1년 전

js에

</p>

<p>} else if (number_str.length == 11) {</p>

<p>new_str = number_str.substr(0, 3) + "-" + number_str.substr(3, 4) + "-" + number_str.substr(7);</p>

<p>

 

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

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

 

로그인 후 평가할 수 있습니다

답변에 대한 댓글 1개

굼떠
1년 전
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;
}
이렇게 넣어주었는데 반응이 없습니다 ㅠㅠ

댓글을 작성하려면 로그인이 필요합니다.

답변을 작성하려면 로그인이 필요합니다.

로그인