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;
}
[출처] 지정 byte만큼만 입력하기|작성자 슈맨
'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 |