IT/JAVA

문자열 입력 자르기

news-wiki 2018. 12. 27. 22:07
728x90

 

 

 

html - onkeyup="JavaScript:check();"

 

 

 

function check()
{
    var form = document.<%= PAGE_FORMNAME %>;
    var text = form.nickname.value;//변경 전 text
    //alert(getStringLength(text));
    var len = getStringLength(text);
    if(len > 20){
        alert('20byte 미만이어야 합니다.');
        form.nickname.value = byteSlicer(text, 20);
    }

    var counter = document.getElementById('byteT');
    counter.innerText = getStringLength(form.nickname.value);
}

// 문자열 길이 체크 알파뉴메릭(1자리), 한글(2자리)
function getStringLength (str)
{
 var retCode = 0;
 var strLength = 0;

 for (i = 0; i < str.length; i++)
 {
  var code = str.charCodeAt(i)
  var ch = str.substr(i,1).toUpperCase()

  code = parseInt(code)

  if ((ch < "0" || ch > "9") && (ch < "A" || ch > "Z") && ((code > 255) || (code < 0)))
   strLength = strLength + 2;
  else
   strLength = strLength + 1;
 }
 return strLength;
}

function byteSlicer(str, length) {
    var len = 0;
    var retVal = "";
    if(str == null)
        return str;
    for(var i = 0; i < length; i++) {
        var c = escape(str.charAt(i));
        if(c.length == 1) len++;
        else if(c.indexOf("%u") != -1) len += 2;
        else if(c.indexOf("%") != -1) len += c.length / 3;
        retVal += c;
        if(len + (escape(str.charAt(i+1)).indexOf("%u") != -1 ? 2 : escape(str.charAt(i+1)).indexOf("%") != -1 ? escape(str.charAt(i+1)).length / 3 : 1) > length) break;
    }
    return unescape(retVal);

 

 

 

참조  : http://sustancia.tistory.com/13 

728x90