자바스크립트

자바스크립트(Javascript) 글자수 체크하는 방법

 

입력란에 글자수를 제한하는 방법입니다. Object  length 함수로 해결할 수가 없습니다. 영어와 한글의 바이트 수가 틀리기 때문입니다. 한글은 2바이트, 영어는 1바이트 입니다. 입력란에 길이 값을 영어는 1, 한글은 2로 계산해서 초가 하지 못하도록 제한하는 방법에 대해 알아 보겠습니다.

 

 먼저 input 박스에 입력한 값을 charAt() 함수로 한자씩 분리할 것입니다. for 문을 돌려 하나씩 분석하는데 아스키값이 아닌 유니코드이면 길이 2로 계산하고 아스키값이면 1로 합니다그말은 2바이트를 사용하는 문자냐 아니냐를 escape() 함수로 판단하는 것입니다. escape() 는 한글일때 16진수형태로 변환해주기 때문에 length 가 이 됩니다예를 들어 %u2345 같이 되는 것이죠.

 

for (var i = 0; i < strLen; i++) {
    oneChar = strValue.charAt(i);
    if (escape(oneChar).length > 4) {
        totalByte += 2;
    } else {
        totalByte++;
    }
 
    // 입력한 문자 길이보다 넘치면 잘라내기 위해 저장
    if (totalByte <= maxByte) {
        len = i + 1;
    }
}

 

 두번째 단락에서는 제한하는 숫자보다 입력한 값이 큰지 판단하게 됩니다크다면 입력 가능한 크기인 len 만큼 substr() 함수를 사용해서 자르게 됩니다자른 값은 input 에 obj.value = str2 로 입력합니다.

 

 

// 넘어가는 글자는 자른다.
if (totalByte > maxByte) {
    alert(maxByte + "자를 초과 입력 할 수 없습니다.");
    str2 = strValue.substr(0, len);
    obj.value = str2;
    chkword(obj, 4000);
}

 

 아래 소스는 input 박스에 입력할 글자를 제한하는 함수의 전체 소스입니다. input 박스에서 onkeyup 이벤트가 발생할때 글자수 체크하는 함수 chkword() 을 실행하게 됩니다

 

 

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=EUC-KR">
<title>ID 값 전송</title>
<script type="text/javascript">
    function chkword(obj, maxByte) {
 
        var strValue = obj.value;
        var strLen = strValue.length;
        var totalByte = 0;
        var len = 0;
        var oneChar = "";
        var str2 = "";
 
        for (var i = 0; i < strLen; i++) {
            oneChar = strValue.charAt(i);
            if (escape(oneChar).length > 4) {
                totalByte += 2;
            } else {
                totalByte++;
            }
 
            // 입력한 문자 길이보다 넘치면 잘라내기 위해 저장
            if (totalByte <= maxByte) {
                len = i + 1;
            }
        }
 
        // 넘어가는 글자는 자른다.
        if (totalByte > maxByte) {
            alert(maxByte + "자를 초과 입력 할 수 없습니다.");
            str2 = strValue.substr(0, len);
            obj.value = str2;
            chkword(obj, 4000);
        }
    }
</script>
</head>
<body>
    <input type="text" id="byteInfo" name="title"
        onkeyup="chkword(this, 5)" />
</body>
</html>

 

 

 

 

 

 

about author

PHRASE

Level 60  머나먼나라

여자가 시집가는 일은 천지간의 큰 법칙이다. 음과 양이 서로 사귀지 아니하면 만물이 생겨나지 않는다. -역경

댓글 ( 6)

댓글 남기기

작성

자바스크립트 목록    more