2013-08-09 7 views
7

W jaki sposób można ograniczyć wejściowe pole, aby używać tylko liczb.Ograniczanie pola wprowadzania tylko do liczb 0-9

Jeśli więc użytkownik miałby wpisać cokolwiek z a-z, nie będzie działał w polu wejściowym.

Dla niektórych może wydawać się to łatwe, ale dla mnie brzmi to jak rakieta.

bez jQuery proszę.

<!DOCTYPE html> 

<html> 

<head> 

</head> 

<body> 

<input type="text" id="numbersonly" /> 

</body> 

</html> 
+7

Poniżej [duplikaty] (http://stackoverflow.com/q/469357/778118) i [inny] (http://stackoverflow.com/q/995183/778118) i [inny] (http://stackoverflow.com/q/14585407/778118) ... To pytanie zostało zadane dziesiątki razy. – jahroy

Odpowiedz

23

Można użyć wejście z HTML5 number typu

<input type="number" /> 

lub javascript, jako wejście z typem number nie ma wartościwejście tylko numerami:

document.getElementById('numbersonly').addEventListener('keydown', function(e) { 
    var key = e.keyCode ? e.keyCode : e.which; 

    if (!([8, 9, 13, 27, 46, 110, 190].indexOf(key) !== -1 || 
     (key == 65 && (e.ctrlKey || e.metaKey )) || 
     (key >= 35 && key <= 40) || 
     (key >= 48 && key <= 57 && !(e.shiftKey || e.altKey)) || 
     (key >= 96 && key <= 105) 
     )) e.preventDefault(); 
}); 

FIDDLE

+0

Napotkałem przeglądarkę Firefox z proponowanym rozwiązaniem przy wpisywaniu% lub^i lub *. To rozwiązanie zaakceptowało te znaki. Dzięki. – Frank

+2

Skrypt Java nie działa z kluczami numerycznymi, a nawet nie działa Backspace. – Apurva

+1

Ta odpowiedź jest dobrym początkiem, ale ma kilka krytycznych wad: (1) nie można użyć klawiszy Backspace, Delete lub Arrow do regulacji wejścia i (2) dopuszcza znaki nieliczbowe po naciśnięciu klawisza 'shift' lub' ctrl' oraz numeru (np. @, #, $). Spójrz na tę odpowiedź: http://stackoverflow.com/questions/995183/how-to-allow-only-numeric-0-9-in-html-inputbox-using-jquery#answer-995193 –

Powiązane problemy