본문 바로가기

컴퓨터/언어,프로그래밍

[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;
}

제주삼다수, 2L,... 오뚜기 진라면 매운... 상하목장 유기농 흰... 남양 프렌치카페 카... 고려인삼유통 홍삼 ... 종근당건강 오메가3... 요이치 카링 유무선...