관리 메뉴

드럼치는 프로그래머

[JavaScript] 소문자 입력시 대문자로 변환 본문

★─Programing/☆─WebProgram

[JavaScript] 소문자 입력시 대문자로 변환

드럼치는한동이 2016. 7. 25. 01:29

입력박스에서 소문자 입력시 대문자로 변경하게 하기위한 방법으로

1. onKeyUp="field.value.toUpperCase()" 로 자바스크립트 처리
2. style="text-transform: uppercase" 로 스타일시트 처리

뭐..대충 두가지 외에 다른 수로 가지고 있는 방법이 있겠지만..
위 두가지 방법에는 한계가 있는데...

첫번째 방법은... 영문은 이상없이 잘 변경되나...
한글과 영문이 섞여있는 경우.. 한글을 입력하면 입력항목이 기존 입력내용이
지워져버리고 한글이 달랑 1자밖에 들어가지 않는 문제가 있다.

두번째 방법은..
보기에는 대문자로 잘~ 나타나지만...
Submit한경우.. 값을 받아보면 소문자이다.

위 두가지 방법외에 한가지를 더 소개하기전에 이벤트부터 설명하자면...

onKeyPress : 정확히 따지면 키가 눌러지고 난 이후 시점에 이벤트가 발생한다.
                   그래서 toUpperCase()를 사용하면 첫번째 키를 누를때에는소문자로 존재하고
                   두번째 키를 눌러야 이전 글자가 대문자로 변한다.
onKeyUp : 키가 눌러지고 다시 올라오는 시점에 이벤트가 발생한다.
                보통 toUpperCase를 사용할 경우 이 이벤트에서 사용한다.
onKeyDown: 개념적으로는 키가 눌러질 때 이지만 현상을 onKeyPress와 마찬가지다.

이벤트 선택에 따라 event.keyCode값이 달라진다.
위와 같은 이벤트중 키가 눌러지는 그 시점에 해당해야 하므로
onKeyPress이번트를 사용하여 함수를 만들어 보면..

/***********************************************************************
*  설 명 :
*  사용예:
*         onKeyPress 이벤트에 사용.
*         onKeyPress 이벤트시 a: 97   z: 122
*         onKeyUp     이벤트시 a: 65   z:  90
*         onKeyDown  이벤트시 a: 65   z:  90
************************************************************************/
function KeyPressUpper(fld) {
   if((event.keyCode >= 97) && (event.keyCode <= 122)) {
      if(fld.value.length < fld.getAttribute("maxlength")) {
         fld.value += String.fromCharCode(event.keyCode).toUpperCase();
      }
      event.returnValue = false;
   }
}

위와 같이 구성할 수 있다.
단..여기서 또 주의해야 할 것은...maxlength가 주어져야 한다는 것이다.
글자 입력수를 제한해야할 경우에는 당연히 그러하겠지만.


[출처http://fpdlrk.tistory.com/entry/%EC%86%8C%EB%AC%B8%EC%9E%90-%EC%9E%85%EB%A0%A5%EC%8B%9C-%EB%8C%80%EB%AC%B8%EC%9E%90%EB%A1%9C-%EB%B3%80%ED%99%98

Comments