2013-08-09 4 views
7

Как ограничить поле ввода только для использования только чисел.Ограничение поля ввода только номерами 0-9

Так что, если пользователь должен вводить что-либо из a-z, он не будет работать в поле ввода.

Некоторым это может показаться легким, но для меня это звучит как наука о ракетах.

нет jQuery пожалуйста.

<!DOCTYPE html> 

<html> 

<head> 

</head> 

<body> 

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

</body> 

</html> 
+7

Вот [один дубликат] (http://stackoverflow.com/q/469357/778118), а [другой] (http://stackoverflow.com/q/995183/778118) и [еще] (http://stackoverflow.com/q/14585407/778118) ... Этот вопрос задавали десятки раз. – jahroy

ответ

23

Вы можете использовать вход с типом HTML5 number

<input type="number" /> 

или JavaScript, как вход с number типа не really limit ввод только цифр:

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

Я столкнулся с браузером Firefox с этим предлагаемым решением при вводе% или^или или *. Это решение приняло эти символы. Благодарю. – Frank

+2

Java Script не работает с цифровыми клавишами и даже не работает backspace – Apurva

+1

Этот ответ является хорошим началом, но имеет несколько критических недостатков: (1) вы не можете использовать клавиши backspace, delete или стрелки для настройки ввода , и (2) он позволяет нечисловым символам при нажатии клавиши 'shift' или' ctrl' плюс число (например, @, #, $). Посмотрите на этот ответ: http://stackoverflow.com/questions/995183/how-to-allow-only-numeric-0-9-in-html-inputbox-using-jquery#answer-995193 –

7

Использование HTML5

<input type="number"> 

Вы можете также использовать Modernizr для обратной совместимости

Смежные вопросы