반응형


<HTML>
 <HEAD>
  <TITLE>javascript exam</TITLE>
  <SCRIPT language="javascript" type="text/javascript">
  //<![CDATA[
    function fc_chk_byte(aro_name,ari_max) {
      var ls_str = aro_name.value;
      var li_str_len = ls_str.length;
      var li_max = ari_max;
      var i = li_byte = li_len = 0;
      var ls_one_char = ls_str2 = "";
      for(i=0; i< li_str_len; i++) {
        ls_one_char = escape(ls_str.charAt(i));

        if( ls_one_char.length == 1 ) li_byte++;
        else if( ls_one_char.indexOf("%u") != -1 )  li_byte += 2;//Db가 한글을 3byte로 인식하여 2->3
        else if( ls_one_char.indexOf("%") != -1 ) li_byte += ls_one_char.length/3;

  if(li_byte <= li_max){
   li_len = li_byte;
  }
      }

      if(li_byte > li_max) {
        alert( li_max + "byte, 초과 ");
        ls_str2 = ls_str.substr(0, li_len);
        aro_name.value = ls_str2;
        document.sms.char_byte.value = 3000;
      }else {
        document.sms.char_byte.value = li_byte;
      }
      aro_name.focus();
    }
  //]]>
  </SCRIPT>
 </HEAD>

 <BODY>
  <FORM METHOD=POST name="sms">
    <TEXTAREA NAME="txta" ROWS="12" COLS="52" onkeyup="fc_chk_byte(this, 3000)"></TEXTAREA>
    <br />
    <input type="text" size="4" name="char_byte" id="char_byte" readonly> / 3000 byte
    <input type="button" value="send" onclick="alert(document.sms.txta.value)" />
  </FORM>
 </BODY>
</HTML>

영문은 1byte로 한글은 2byte로 마춰져있다.
현재는 3000으로 마춰져있지만 fc_chk_byte(this, 3000) <-- 여기서 3000 을 자신이 원하는 수로 변경을 하면 수정이 가능하다.

반응형

+ Recent posts