본문 바로가기

IT

jeus와 톰캣에서 모두 작동하는 input박스 숫자만 입력


로컬 개발 서버는 톰캣,


운영 및 테스트 서버는 JEUS를 사용하다 보니까


WAS 및 서버의 차이로 인해


JSP의 일부 동작이 일정하지가 않다.






톰캣에선 이상없이 작동하는데


JEUS에선 동작하지 않는 현상이 종종 발생했다.




요번에 일어난 input 박스에서 숫자만 입력하기도 그렇다.


자바스크립트 부분

function onlyNumber(event){
    if((event.keyCode<48)||(event.keyCode>57)) {
        event.returnValue=false;
   }
}

JSP FORM 부분


<input type="text" name="recentYear" id="recentYear" onkeypress="return onlyNumber(event);">


처음엔 위의 소스만 사용했다.


톰캣에서는 무난하게 작동.



하지만 JEUS 테스트 서버에 올리니 작동하지 않는 것이다.



무엇이 문제일까...-_-;



일단 onkeypress => onkeydown으로 변경.


javascript 부분도 수정했다.


function onlyNumber(event){
    event = event || window.event;
 
    var keyID = (event.which) ? event.which : event.keyCode;
     
    if ( (keyID >= 48 && keyID <= 57) || (keyID >= 96 && keyID <= 105) || keyID == 8 || keyID == 9 || keyID == 46 || keyID == 37 || keyID == 39 ) {
        return;
         
    } else {
        return false;
         
    }
}

function removeChar(event) {
    event = event || window.event;
     
    var keyID = (event.which) ? event.which : event.keyCode;
     
    if ( keyID == 8 || keyID == 9 || keyID == 46 || keyID == 37 || keyID == 39 ) {
        return;
         
    } else {
        event.target.value = event.target.value.replace(/[^0-9]/g, "");
         
    }
}

JSP FORM부분

<input type="text" name="recentYear" id="recentYear" onkeydown="return onlyNumber(event);">

위와 같이 변경되니 정상작동.


위의 소스는 테스트해보니 톰캣에서도 정상작동한다.




removeChar는 가끔 사용자 중에 마우스 오른쪽 버튼 클릭 붙여넣기를


사용하시는 분들이 있어 onkeydown만 해놓으면 방어가 안된다.




그래서 


<input type="text" name="recentYear" id="recentYear" onkeydown="return onlyNumber(event);" onmouseout="removeChar(event);">

onmousedown / onmouseup으로는 적용이 안되서


onmouseout을 소스에 적용했다.




이젠 톰캣과 JEUS에서 모두 숫자만 입력이 가능하다.