상세 컨텐츠

본문 제목

input 박스에서 한글 입력 숫자 제한하는 jQuery

노드js·자바스크립트

by 김일국 2017. 8. 16. 10:58

본문

이번 작업에서 입력제한을 두는 input 박스가 있어서 해당 내용을 정리했습니다.

일반적으로 태그의 maxlength 속성으로 처리를 하지만, 한글의 입력제한은 제대로 작동하지 않게 됩니다.

아래 html코드에서 maxlength="200" 으로 하고 제이쿼리를 적용하면, 영문,숫자는 200자, 한글은 100자까지 정상적으로 제한이 됩니다.

하지만, 중요한 사실 한가지는 DataBase별 차이가 있다는 점...
-mysql(4.1이상,요즘은 보통 5.x이상이다) , MariaDB : varchar(10) : 한글10자, 영문,숫자 10자
-MS-SQL : varchar(10) : 한글 5자, 영문,숫자 10자 , nvarchar(10) : 한글 10자, 영문, 숫자 10자
-Oracle : varchar2(10) : 한글 3자, 영문,숫자 10자, nvarchar2(10) : 한글 10자, 영문,숫자 10자

현재 홈페이지는 mysql을 사용하므로 varchar(200)이면, 한글도 200자가 들어가므로 아래와 같은 처리가 필요 없다는 ㅜㅜ(다른분들도 저처럼 뻘짓을 하지 말기 바랍니다^^)


- html 태그부분

<input type="text" maxlength="200" onblur="inputLengthCheck(this);" value="" placeholder="" id="test" name="test" title="테스트" />


- 제이쿼리(자바스크립트)부분

<script type="text/javascript">
function inputLengthCheck(eventInput){
 var inputText = $(eventInput).val();
 var inputMaxLength = $(eventInput).prop("maxlength");
 var j = 0;
 var count = 0;
 for(var i = 0;i < inputText.length;i++) {
  val = escape(inputText.charAt(i)).length;
  if(val == 6){
   j++;
  }
  j++;
  if(j <= inputMaxLength){
   count++;
  }
 }
 if(j > inputMaxLength){
  eventInput.focus();
  $(eventInput).val(inputText.substr(0, count));
  errorMessage = $(eventInput).attr('title')+"에서 허용된 문자열의 한글 최대값("+(inputMaxLength/2)+")자를 초과했습니다. \n초과된 내용은 자동으로 삭제 됩니다.";
  alert(errorMessage);
 }
}
</script>

관련글 더보기

댓글 영역