2014-08-28 3 views
4

사용자가 숫자 이외의 것을 입력하지 못하게하려고합니다. Chrome에서는 작동하지만 Firefox에서는 작동하지 않습니다. 나는 많은 해결책을 찾았지만 행운은 없었습니다. keydown, keypress, 다른 이벤트 등을 사용했습니다. 제발 도와주세요. 도움이된다면 이것이 모두 aspx 파일에 있습니다.Keypress는 크롬에서는 작동하지만 파이어 폭스에서는 작동하지 않습니다.

onkeypress="return myFunction(event);" 

<script type="text/javascript"> 
    // Check if key press is a number 
    function myFunction(evt) { 
     var e = event || evt; // for trans-browser compatibility 
     var charCode = e.which || e.keyCode; 

     if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
      alert("Enter Numbers Only"); 
      return false; 
     } 
     return true; 
    } 
</script> 
+0

에 먼저 HTML은 당신이 e.charCode를 사용하려고 했습니까? e = evt.which || evt.charCode || evt.keyCode; – SSA

답변

5

나는이 라인

var e = event || evt; // for trans-browser compatibility 

당신이 이벤트를받을 수 있나요 이해가 안 돼요? Firefox에서이 오류가 발생했습니다.

코드를 수정하고 Chrome 및 Firefox에서 테스트했습니다. 입력

<input onkeypress="return validate(event);" /> 

및 기능

// Check if key press is a number 
function validate(e) 
{ 
    var charCode = e.which || e.keyCode; 

    if (charCode > 31 && (charCode < 48 || charCode > 57)) 
    { 
     alert("Enter Numbers Only"); 
     return false; 
    } 
    return true; 
} 

http://jsfiddle.net/bskqpgvy/2/

+0

이것이 효과가있었습니다! 간단한 수정과 똑바로 포인트 – user3339242

+0

위대한, 유효한 답변으로 선택하고 또한 그의 공헌에 대한 @ @ 제이슨 신용. – FrEaKmAn

1

스크립트의 일부는 포함되어 있지 않지만 위에 제공된 코드가 모든 브라우저에서 작동하지 않는지 확실하지 않습니다. 여담으로

window.addEventListener("keypress", function(evt) { 
    myFunction(evt); 
}); 

// Check if key press is a number 
function myFunction(evt) { 
    var e = event || evt; // for trans-browser compatibility 
    var charCode = e.which || e.keyCode; 

    if (charCode > 31 && (charCode < 48 || charCode > 57)) { 
     alert("Enter Numbers Only"); 
     return false; 
    } 
    return true; 
} 

http://jsfiddle.net/e5d8txa2/

필드에만 번호를 입력 한 경우, 최신 브라우저에서 당신은 입력 필드에 "숫자"형식을 사용할 수 있습니다. 제출할 때 사용자에게 가시적 인 오류가 발생합니다. 물론 필요에 따라 다른 방법으로 필드 값을 확인해야합니다.

+0

당신의 공헌에 감사드립니다 – user3339242

관련 문제