숫자만 입력받는 방법은 무수히 많다.
숫자외 문자를 입력하면 글이 안써지게 하는 코드 (아쉽게 한글은 완성형으로 해당이 안된다.)
css로 ime-mode 를 disabled 해서 한글은 안써지게 하는 코드 (아쉽게 크롬은 반응이 없다.)
또 어렵사리 만들어 놓으니 초성만 쓰고 탭을 눌러 이동하면 그 초성이 input칸에 남아있다.
등등 수 많은 팁들이 있지만 우리나라 한글도 못쓰게하고 숫자만 쓰게 하려면 좀 힘들다.
그래서 여기저기 코드를 빌려다가 만들었다.
var validCheck = {
keyDown : function (e) {
var key;
if(window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
var event;
if (key == 0 || key == 8 || key == 46 || key == 9){
event = e || window.event;
if (typeof event.stopPropagation != "undefined") {
event.stopPropagation();
} else {
event.cancelBubble = true;
}
return;
}
if (key < 48 || (key > 57 && key < 96) || key > 105 || e.shiftKey) {
e.preventDefault ? e.preventDefault() : e.returnValue = false;
}
},
keyUp : function (e) {
var key;
if(window.event)
key = window.event.keyCode; //IE
else
key = e.which; //firefox
var event;
event = e || window.event;
if ( key == 8 || key == 46 || key == 37 || key == 39 )
return;
else
event.target.value = event.target.value.replace(/[^0-9]/g, "");
},
focusOut : function (ele) {
ele.val(ele.val().replace(/[^0-9]/g, ""));
}
};
//이렇게 함수를 써주고 아래처럼 사용한다.
$('input.phonenumber').css("ime-mode", "disabled").keydown( function(e) {
validCheck.keyDown(e);
}).keyup( function(e){
validCheck.keyUp(e);
}).focusout( function(e){
validCheck.focusOut($(this));
});
위 처럼 스크립트에 사용하면 phonenumber 클래스가 적용된 모든 input에 숫자를 제외한 영어/한글/특수문자 등이 입력되지 않는다. (라고 일단 테스트 해본 결과이다.)