본문 바로가기
Programming/JavaScript

문자 byte 수 체크하기

by 막이 2013. 12. 5.

function check_msglen() {

var length = calculate_msglen(document.getElementById('content').value);

document.getElementById('byte').value = length;

}


   function calculate_msglen(message) {

        var nbytes = 0;


        for (i=0; i<message.length; i++) {

            var ch = message.charAt(i);

            if (escape(ch).length > 4) {

                nbytes += 2;

            } else if (ch != '\r') {

                nbytes++;

            }

        }

        return nbytes;

    }



<textarea id="content" cols="17" row="9" onkeyup="javascript:check_msglen();"></textarea>

<input type="text" id="byte" value=""/>

 

 

 

 

 

==================================

onkeyup="(12, this.name);" // 제한 byte 길이, 객체 이름

 

 

// 글자 byte 계산
function checkChar(length_limit,seq){
var comment="";
comment = document.getElementById(seq);

var length = calculate_msglen(comment.value);

if (length > length_limit) {
//alert("최대 " + length_limit + "byte이므로 초과된 글자수는 자동으로 삭제됩니다.");
comment.value = comment.value.replace(/\r\n$/, "");
comment.value = assert_msglen(comment.value, length_limit);
}
}

//글자수반환
function calculate_msglen(message){
var nbytes = 0;

for (i=0; i<message.length; i++) {
var ch = message.charAt(i);
//alert("escape="+escape(ch.length)+"["+ch.length+"]");

if(escape(ch).length > 4) {
nbytes += 2;
} else if (ch == '\n') {
if (message.charAt(i-1) != '\r') {
nbytes += 1;
}
} else if (ch == '<' || ch == '>') {
nbytes += 4;
} else {
nbytes += 1;
}
}
return nbytes;
}

//글자수 Max까지다시 잘라내기
function assert_msglen(message, maximum){
var inc = 0;
var nbytes = 0;
var msg = "";
var msglen = message.length;

for (i=0; i<msglen; i++) {
var ch = message.charAt(i);
if (escape(ch).length > 4) {
inc = 2;
} else if (ch == '\n') {
if (message.charAt(i-1) != '\r') {
inc = 1;
}
} else if (ch == '<' || ch == '>') {
inc = 4;
} else {
inc = 1;
}
if ((nbytes + inc) > maximum) {
break;
}
nbytes += inc;
msg += ch;
}
return msg;
}

 

'Programming > JavaScript' 카테고리의 다른 글

[jQuery] $.unique() , $.inArray() ,$.makeArray()  (0) 2014.07.04
[jquery]jquery widget example  (0) 2014.03.07
Table insertRow() Method  (0) 2013.11.27
ajax 사용법  (0) 2013.11.08
동적 폼 추가 삭제  (0) 2013.10.30