2016-10-06 2 views
0

외부 JS- 파일에서 사용자가 숫자 입력을 사용하지 못하게하는 다음 코드가 있습니다.addEventListener를 통해 false를 반환하지 않는 숫자 입력 만 허용하는 함수

function numericInput(evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode 
    if (charCode > 48 || charCode < 57) 
    { 
     return true; 
    } 
    else 
    { 
     return false; 
    } 
} 

내가 addEventListener를 통해이 기능을 추가 할 나는 내가 잘못 뭐하는 거지

document.getElementById("myTextbox").addEventListener("keypress", function (evt) { 
    numericInput(evt); 
}, false); 

을 다음습니까?

+0

이 왜, 무엇을 당신이 뭘 하려는지 그 함수가 반환 문제 것인가? – adeneo

+0

@adeneo "a"를 입력하면 숫자가 아닌 키를 사용하지 못하게하려고합니다. 텍스트 상자에서 아무 것도 일어나지 않습니다. –

+1

'evt.preventDefault()'로'return false '를 바꾸어보십시오. – adeneo

답변

1

if 문에서 charCode > 48 || charCode < 57 부분은 실제로 항상 true를 반환합니다. 모든 숫자가 48보다 크거나 57보다 작기 때문입니다. ||&&이어야합니다. 또 다른 건, 숫자에 대한 가장 작은 KeyCode는 48이며, ||&&으로 바꾸면 포함되지 않습니다. 숫자에 대한 최대 KeyCode는 57이 아닙니다.

charCode > 48 || charCode < 57charCode >= 48 && charCode <= 57으로 바꾸면 코드가 올바르게 작동한다고 생각합니다.

편집 : Adeneo 이전에 언급 한 바와 같이이 , 당신은 evt.preventDefault()return false를 교체해야합니다.

이 기능은 작동합니다 :

function numericInput(evt) { 
 
    var charCode = (evt.which) ? evt.which : event.keyCode 
 
    if (charCode >= 48 && charCode <= 57) 
 
    { 
 
     return true; 
 
    } 
 
    else 
 
    { 
 
     evt.preventDefault(); 
 
    } 
 
} 
 

 
/* OR: */ 
 

 

 
function numericInput(evt) { 
 
    var charCode = (evt.which) ? evt.which : event.keyCode 
 
    if (charCode < 48 || charCode > 57) evt.preventDefault(); 
 
}

관련 문제