문자 보내기를 웹에서 하게 만들 때, 80바이트 이상 문자를 쓰지 못하게 만들어야 한다. 이런 경우엔 한글 한 글자를 2바이트로 처리해야 하기 때문에 js 처리가 좀 필요하다.
아래가 한글 한 글자를 2바이트 처리해서 길이를 구하는 함수다.
function getTextLength(str) {
var len = 0;
for (var i = 0; i < str.length; i++) {
if (escape(str.charAt(i)).length == 6) {
len++;
}
len++;
}
return len;
}
이걸 활용해서 만들면 된다. 나머지는 예제에 있으니 패스. 아래는 예제 전체 코드를 그냥 옮긴 것이다.
<!doctype html>
<html lang="ko">
<head>
<meta charset="UTF-8">
<title>문자 80바이트 이하로 끊기</title>
<script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
<script>
$(document).ready(function () {
$('.js-sms-content').keyup(function(){
cut_80(this);
});
$('.js-send-sms').click(function(){
if(getTextLength($('.js-sms-content').val()) > 80){
alert("문자는 80바이트 이하로 적어 주세요.");
return false;
}else{
alert("문자가 80바이트 이하입니다.");
}
});
});
/**
* 한글포함 문자열 길이를 구한다
*/
function getTextLength(str) {
var len = 0;
for (var i = 0; i < str.length; i++) {
if (escape(str.charAt(i)).length == 6) {
len++;
}
len++;
}
return len;
}
function cut_80(obj){
var text = $(obj).val();
var leng = text.length;
while(getTextLength(text) > 80){
leng--;
text = text.substring(0, leng);
}
$(obj).val(text);
$('.bytes').text(getTextLength(text));
}
</script>
</head>
<body>
<textarea name="" id="" cols="30" rows="10" class="js-sms-content"></textarea>
<div class="bytes-wrapper">
<span class="bytes">0</span>bytes
</div>
<button class="js-send-sms">확인</button>
</body>
</html>
댓글 남기기