본문 바로가기

[JavaScript] 자바스크립트 :: 문자열 글자수 자르기 (문자메세지등등에서 사용)

반응형

// JavaScript Document


// 글자수 , 폼 객체 이름 , input type name 을 넣어주세요
//textlimit
//<span id="textlimit">0</span>/60 자 글자수를 찍어줍니다
function updateChar(length_limit, formObject,seq)
{
var comment='';
comment = eval("document."+formObject+"."+seq);
var form = eval("document."+formObject);

var length = calculate_msglen(comment.value);
textlimit.innerText = length;
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;
}
textlimit.innerText = nbytes;
return msg;
}

반응형

댓글


Copyright ⓒ SmartWeb All rights reserved.