웹마스터 팁
page_full_width">
변수의 실제 바이트 수를 리턴하는 팁
2003.08.29 00:11
제가 자바스크립트에서 실제 바이트 수를 리턴하는 방법을
찾다가 결국 만들어버렸습니다.
함수의 값이 한글이든 영문이든 무조건 실제 바이트를 리넡.
"대한민국"은 문자열의 길이가 4 이지만 바이트는 4 바이트겠죠.
아무튼 회원가입시 아이디의 길이 체크에 유용할 거예요.
function bytelength(bstr)
{
len = bstr.length;
for (ii=0; ii<bstr.length; ii++)
{
xx = bstr.substr(ii,1).charCodeAt(0);
if (xx > 127) { len++; }
}
return len;
}
찾다가 결국 만들어버렸습니다.
함수의 값이 한글이든 영문이든 무조건 실제 바이트를 리넡.
"대한민국"은 문자열의 길이가 4 이지만 바이트는 4 바이트겠죠.
아무튼 회원가입시 아이디의 길이 체크에 유용할 거예요.
function bytelength(bstr)
{
len = bstr.length;
for (ii=0; ii<bstr.length; ii++)
{
xx = bstr.substr(ii,1).charCodeAt(0);
if (xx > 127) { len++; }
}
return len;
}
댓글 2
-
lyx
2003.09.27 19:16
-
김상석
2003.10.06 20:06
제가 예전에 쓸라고 만들어 본것......
다음카페에 꼬리말기능에 있는것을 쓰기편하게 수정했습니다...
필요하신분 가져다 쓰세요.......^^
leng_chk(field,maxlimit) => field : 체크할 폼명과변수명 maxlimit => 제한할 바이트
<script>
function leng_chk(field, maxlimit)
{
// field = 확인할 변수(?)명...
// maxlimit = 제한할 글자수(byte)
//alert(field.value);
if(event.keyCode == "13" || event.keyCode == "37" || event.keyCode == "38"|| event.keyCode == "39" || event.keyCode == "40" ){return;}
else
{
rtn_value = calculate_msglen(field);
if (rtn_value > maxlimit)
{
field_len = field.value.length;
alert("최대입력영역("+maxlimit+"byte)초과");
return_value = assert_msglen(field , maxlimit);
field.value=return_value;
}
}
}
function calculate_msglen(field)
{
var nbytes = 0;
var message = field.value;
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(field, maximum)
{
var inc = 0;
var nbytes = 0;
var msg = "";
var message = field.value;
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;
}
return msg;
}
</script>
<form name='input_form'>
<input type='text' name='a' onKeyup="leng_chk(input_form.a,5)"><br>
<textarea name='aa' rows='5' cols='65' onKeyup="leng_chk('input_form.aa',500)"></textarea>
</form>
실제 글자수 리턴하기? 이정도가 맞겠죠..
대한민국 -> 8바이트입니다.