밑에 함수는 글자수를 체크하여 자동으로 몇바이트까지 입력을 체크하면서 돈다.
<script language="JavaScript">
//textarea 자동 글자수 첵크 함수
<!--
function updateChar(length_limit)
{
var form = document.frm;
var length = calculate_msglen(frm.comment.value);
textlimit.innerText = length;
if (length > length_limit) {
alert("최대 " + length_limit + "byte이므로 초과된 글자수는 자동으로 삭제됩니다.");
frm.comment.value = frm.comment.value.replace(/\r\n$/, "");
frm.comment.value = assert_msglen(frm.comment.value, length_limit);
}
}
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 == '\n') {
if (message.charAt(i-1) != '\r') {
nbytes += 1;
}
} else if (ch == '<' || ch == '>') {
nbytes += 4;
} else {
nbytes += 1;
}
}
return nbytes;
}
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;
}
textlimit.innerText = nbytes;
return msg;
}
//-->
<textarea name="comment" id="comment" cols="80" rows="4" class="textarea1" onkeyup="updateChar(250);"></textarea>