본문 바로가기
TIP)

[JSP, JS] 글자 수 제한하는 방법

by 모리야의 잡다한 블로그 2022. 5. 17.
728x90
반응형

1. JS단

//maxByte = jsp단에 있는 최대 byte수. ex) 50이면 50byte가 maxByte
function fnChkByte(obj, maxByte)
{
    var str = obj.value;
    var str_len = str.length;


    var rbyte = 0;
    var rlen = 0;
    var one_char = "";
    var str2 = "";


    for(var i=0; i<str_len; i++)
    {
        one_char = str.charAt(i);
        if(escape(one_char).length > 4) {
            rbyte += 3;                                         //한글3Byte
        }else{
            rbyte++;                                            //영문 등 나머지 1Byte
        }
        if(rbyte <= maxByte){
            rlen = i + 1;                                          //return할 문자열 갯수
        }
     }
     if(rbyte > maxByte)
     {
        // alert("한글 "+(maxByte/3)+"자 / 영문 "+maxByte+"자를 초과 입력할 수 없습니다.");
        alert("이름은 최대 " + maxByte + "byte를 초과할 수 없습니다.")
        str2 = str.substr(0,rlen);                                  //문자열 자르기
        obj.value = str2;
        fnChkByte(obj, maxByte);
     }
     else
     {
        document.getElementById('clientName').innerText = rbyte; // jsp단 id 값들
        document.getElementById('department').innerText = rbyte;
        document.getElementById('job').innerText = rbyte;
        document.getElementById('email').innerText = rbyte;
        document.getElementById('phone').innerText = rbyte;
        document.getElementById('tel').innerText = rbyte;
     }
}

 

 

2. JSP 단

 

<input type="text" id="tel" name="tel" oninput="autoHyphen(this,13)" onKeyUp="javascript:fnChkByte(this,50)" class="editModeInput2" readonly />

onKeyUp 함수에서 javascript를 따로 선언해줘야 한다.

728x90
반응형

댓글