2010-12-29 2 views
1

사용자 입력을 텍스트 입력으로 자동 정리해야합니다. 첫 번째 문자를 제외하고 숫자를 허용하려면 숫자 또는 하이픈.텍스트 입력에서 숫자 입력 만 허용하고 선택적 첫 번째 문자로 하이픈을 허용합니다.

따라서, 예를 들어, 사용자 유형은 138a29 경우 자동 13829.

나는 숫자 만 허용하는 키 코드를 확인하는 때 onKeyPress 이벤트를 사용했다

으로 업데이트 될 수 있지만은 조금 어려운 것으로 판명 것 일부 브라우저에서는 화살표 키, 백 스페이스 키 등을 사용하지 않고 숫자 만 허용합니다. 이제 옵션 첫 번째 문자로 하이픈 (-)을 허용하는 새로운 요구 사항이 있지만 하이픈은 문자열의 다른 곳에서는 유효하지 않습니다.

특정 프로젝트에 사용할 프로토 타입 라이브러리가 있지만 jQuery는 없습니다.

+0

들이 입력하는 동안이 청소하는 것입니다 시도하거나 제출하기 전에 값을 청소? – Sparky

+0

타이핑 중에 청소하십시오. – NatalieMac

+0

이것은 화살표에 문제가있어서 키보드 조작에 대한 훌륭한 참고 자료입니다. http://unixpapa.com/js/key.html –

답변

1

가장 간단한 방법은 keyCode를 피하고 keyup에 텍스트 상자의 값을 사용하는 것입니다. 이런 식으로 뭔가 ...

Event.observe('myInput', 'keyup', function(){ 
    var value = this.value, first; 
    if(value.length == 0) 
     return; 

    first = value.charAt(0); 
    value = value.replace(/[^0-9]/g,''); 

    if(first == '-') 
     value = first + value; 

    this.value = value; 
    return true; 
}); 
+0

이것은 치료법입니다! 필자 만의 특별한 경우에 맞게 약간 수정을해야했지만 이것은 훌륭한 해결책입니다. 감사! – NatalieMac

0

는 (잘못된 문자를 허용하지 즉)이

<script type="text/javascript"> 
function whatKey(e) { 
    var thetext = document.getElementById('tt'); // Current value 
    var theKey = String.fromCharCode(e.keyCode); // key entered 
    var combval = thetext.value + theKey;   // Result would be this 

    return (!isNaN(combval) || combval=='-');  // if result OK, accept key 

} 
</script> 
관련 문제