Javascript에서 문자열 길이를 체크할때, 그냥 length를 사용하면 1Byte인 영문, 숫자 입력시엔 상관없지만 한글 '가' 입력시에도 length 값은 1로 나온다. 아래 스크립트는 escape() 함수를 이용해 입력받은 값이 한글인지 판단 후 글자수를 2byte로 계산해준다. 저작자표시비영리변경금지 '프로그래밍 > javascript' 카테고리의 다른 글
Javascript에서 문자열 길이를 체크할때, 그냥 length를 사용하면 1Byte인 영문, 숫자 입력시엔 상관없지만 한글 '가' 입력시에도 length 값은 1로 나온다. 아래 스크립트는 escape() 함수를 이용해 입력받은 값이 한글인지 판단 후 글자수를 2byte로 계산해준다. See the Pen 한글포함 문자열 길이값 by juein (@juein) on CodePen. 'Web > Javascript' 카테고리의 다른 글
티스토리 뷰JQUERY 글자수, 글자 바이트 체크
끗!@#@#%ㄲ 자바스크립트에서 입력란에 글자수를 제한하는 방법입니다. Object 의 length 함수로는 해결할 수가 없습니다. 영어와 한글의 바이트수가 틀리기 때문입니다. 한글은 2바이트, 영어는 1바이트로 다릅니다. 입력란에 길이 값을 영어는 1, 한글은 2로 계산해서 초과하지 못하도록 제한하는 방법을 사용해야 합니다. ▼ 먼저 input 박스에 입력한 값을 charAt() 함수로 하나의 글자를 분리합니다. for 반복문을 돌려 하나씩 분석하는데, 유니코드일 경우 길이를 2로 계산하고, 아스키값일 경우 1로 합니다. 아스키와 유니코드의 판단은 escape() 함수로 합니다. escape() 는 한글일때 16진수형태로 변환해주기 때문에 length 가 6 이 됩니다. 예를 들어 %u2345 같이 되는 것이죠.
▼ 두 번째 단락에서는 제한하는 숫자보다 입력한 값이 큰지 판단합니다. 값이 크다면 입력 가능한 크기인 len 만큼 substr() 함수를 사용해서 자릅니다. 자른 값은 input 에 obj.value = str2 로 입력합니다. 소스는 아래와 같습니다.
▼ 다음은 input 박스에 입력할 글자를 제한하는 함수의 전체 소스입니다. input 박스에서 onkeyup 이벤트가 발생할 때 글자수 체크하는 함수 chkword() 을 실행합니다. |