2011-09-20 4 views
1

는 일반적으로 같은 것을 얻을 텍스트 입력에 숫자 만 허용 할 수있는 방법을 검색 할 때 :텍스트 입력에 숫자 만 허용하고 JavaScript로 명령을 허용하는 방법은 무엇입니까?

function keyPressEvent (e) { 
    var keyCode = e.which || e.keyCode; 
    if (keyCode < 48 || keyCode > 57) { 
     return false; 
    } 
} 

을 그러나 문제는이 단지 명령이 작동하지 않는 키를 만드는 것입니다. 백 스페이스 및 삭제로 시작하지만 ctrl + a 또는 f5까지입니다. 나는이 모든 것에 예외를 만들 수 있다는 것을 알고 있지만, 이것이 시간 허리라고 생각합니다. 내가 원하는 것을 쉽게 할 수있는 방법이 있습니까? 텍스트에 추가 할 문자를 감지하는 것과 같은 것이 있습니까?

+0

여기에서 제안한 내용을 수행 할 수 있습니다. http://stackoverflow.com/questions/950208/textbox-with-alphanumeric-check-in-javascript- 알파 문자. – scrappedcola

답변

2

나는 실제로 사용자가 원하는대로 입력/입력 할 수있는 접근법을 사용했고 값을 수동으로 수치로 강제 변환했습니다. 이와 같은 것 (jQuery 프로젝트이지만 아이디어는 jQuery를 사용하지 않고 쉽게 다시 사용할 수있다.).

fieldJq.bind('click keyup change blur focus', function (ev) { 
    var curVal = $(this).val(); 
    $(this).val(curVal.replace(/[^0-9\.]/g, '')); 
}); 

아이디어는 여기에 내가 그들에게 그것으로 그들이 원하는 무엇이든 넣어 (그래서 복사/붙여 넣기 등 같은 제어 명령을 깨는 기회가 없다)시키는거야 것을되고 있지만, 어떤 값 변경 후 난 아무것도 제거 그것은 숫자 또는 소수점이 아닙니다. 이 시점에서 100 % 내화 성능을 발휘하지는 않습니다 (10.0.0은 유효하지 않습니다). 그러나 처음에는 거의 닫힙니다. 부동 소수점 지원이 필요하지 않고 정규 표현식에서 \.을 제거 할 수 있으면 강제로 숫자 입력을 할 수 있습니다.

+0

이 시점에서 가장 좋은 대답이라고 생각합니다. 그 동안 대부분의 브라우저에서 숫자 입력 유형을 구현할 때까지 기다려야합니다. 어쨌든 고마워요! – Cokegod

+0

IE7에서는 항상 끝까지 커서를 놓고 바꾸기 전에 확인하여 수정할 수 있습니다 : if (curVal.search (/ [^ 0-9 \.]/g)> - 1) – samir105

관련 문제