문자열의 Byte 수 체크하기
페이지 정보
작성자 서방님 댓글 0건 조회 136회 작성일 06-09-12 13:36본문
<script language="javascript">
/*
' ------------------------------------------------------------------
' Function : fc_chk_byte(aro_name)
' Description : 입력한 글자수를 체크
' Argument : Object Name(글자수를 제한할 컨트롤)
' Return :
' ------------------------------------------------------------------
*/
function fc_chk_byte(aro_name,ari_max)
{
var ls_str = aro_name.value; // 이벤트가 일어난 컨트롤의 value 값
var li_str_len = ls_str.length; // 전체길이
// 변수초기화
var li_max = ari_max; // 제한할 글자수 크기
var i = 0; // for문에 사용
var li_byte = 0; // 한글일경우는 2 그밗에는 1을 더함
var li_len = 0; // substring하기 위해서 사용
var ls_one_char = ""; // 한글자씩 검사한다
var ls_str2 = ""; // 글자수를 초과하면 제한할수 글자전까지만 보여준다.
for(i=0; i< li_str_len; i++)
{
// 한글자추출
ls_one_char = ls_str.charAt(i);
// 한글이면 2를 더한다.
if (escape(ls_one_char).length > 4)
{
li_byte += 2;
}
// 그밗의 경우는 1을 더한다.
else
{
li_byte++;
}
// 전체 크기가 li_max를 넘지않으면
if(li_byte <= li_max)
{
li_len = i + 1;
}
}
// 전체길이를 초과하면
if(li_byte > li_max)
{
alert( li_max + " 글자를 초과 입력할수 없습니다. n 초과된 내용은 자동으로 삭제 됩니다. ");
ls_str2 = ls_str.substr(0, li_len);
aro_name.value = ls_str2;
}
aro_name.focus();
}
/*
' ------------------------------------------------------------------
' Function : fc_chk2()
' Description : Enter키를 못치게한다.
' Argument :
' Return :
' ------------------------------------------------------------------
*/
function fc_chk2()
{
if(event.keyCode == 13)
event.returnValue=false;
}
</script>
< textarea name="txt_aaa" rows="5" cols="60" onkeyup="fc_chk_byte(this,10);" onkeypress="fc_chk2()" >
[JS]입력한 글자의 Byte수 체크하기
DB에 자료를 입력할 경우 가끔 column의 size를 over하여 Exception이 발생할 경우가
생깁니다.
<script language=JavaScript>
/**
* 한글을 2바이트 씩 계산하여 입력받은 문자열이 DB에 저장될 때 총 몇바이트를 차지하는지 계산한다.
* 엔터(rn)는 2바이트를 차지한다.
* @param val : 입력받은 문자열
*/
function cal_length(val)
{
// 입력받은 문자열을 escape() 를 이용하여 변환한다.
// 변환한 문자열 중 유니코드(한글 등)는 공통적으로 %uxxxx로 변환된다.
var temp_estr = escape(val);
var s_index = 0;
var e_index = 0;
var temp_str = "";
var cnt = 0;
// 문자열 중에서 유니코드를 찾아 제거하면서 갯수를 센다.
while ((e_index = temp_estr.indexOf("%u", s_index)) >= 0) // 제거할 문자열이 존재한다면
{
temp_str += temp_estr.substring(s_index, e_index);
s_index = e_index + 6;
cnt ++;
}
temp_str += temp_estr.substring(s_index);
temp_str = unescape(temp_str); // 원래 문자열로 바꾼다.
// 유니코드는 2바이트 씩 계산하고 나머지는 1바이트씩 계산한다.
return ((cnt * 2) + temp_str.length) + "";
}
출처:okjsp.pe.kr
댓글목록
등록된 댓글이 없습니다.