신청폼 작성 시 전화번호 자리수 고정하는 방법 채택완료
상담 신청 폼에서 전화번호 영역 자리수를 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 포인트
coDribble
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 창 띄우면 되지 않을까요...??
로그인 후 평가할 수 있습니다
댓글을 작성하려면 로그인이 필요합니다.
Min아빠
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개
댓글을 작성하려면 로그인이 필요합니다.
Min아빠
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;
}
이렇게 넣어주었는데 반응이 없습니다 ㅠㅠ
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;
}
이렇게 넣어주었는데 반응이 없습니다 ㅠㅠ
댓글을 작성하려면 로그인이 필요합니다.
답변을 작성하려면 로그인이 필요합니다.
로그인전체 질문 목록
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
답변대기
채택
답변대기
답변대기