Предложения для input type="text"
вместо HTML5 входа input type="number"
:
//HTML
<input id="inp" type="text" />
//JAVASCRIPT (JQUERY NEEDED)
function onlyNumbers(evt) {
// SOME OPTIONS LIKE ENTER, BACKSPACE, HOME, END, ARROWS, ETC.
var arrayExceptions = [8, 13, 16, 17, 18, 20, 27, 35, 36, 37,
38, 39, 40, 45, 46, 144];
if ((evt.keyCode < 48 || evt.keyCode > 57) &&
(evt.keyCode < 96 || evt.keyCode > 106) && // NUMPAD
$.inArray(evt.keyCode, arrayExceptions) === -1) {
return false;
}
}
$('#inp').on('keydown', onlyNumbers);
//JAVASCRIPT (WITHOUT JQUERY)
function inArray(value, arr) {
for(var i = 0; i < arr.length; i++) {
if (value === arr[i]) {
return i;
}
}
return -1;
}
function onlyNumbers(evt) {
// SOME OPTIONS LIKE ENTER, BACKSPACE, HOME, END, ARROWS, ETC.
var arrayExceptions = [8, 13, 16, 17, 18, 20, 27, 35, 36, 37,
38, 39, 40, 45, 46, 144];
if ((evt.keyCode < 48 || evt.keyCode > 57) &&
(evt.keyCode < 96 || evt.keyCode > 106) && // NUMPAD
inArray(evt.keyCode, arrayExceptions) === -1) {
return false;
}
}
document.getElementById('inp').onkeydown = onlyNumbers;
Как я сказал в своем комментарии, пока HTML5 не станет стандартным веб-языком, который мы можем работать с ним правильно, я предпочитаю использовать это.
Demo с JQuery
Demo без JQuery
Из любопытства, что же 'this.value' дает (вместо' $ (это) .val() ')? –
Самый простой способ сделать это в подходе - это игнорировать HTML5, использовать текст DaGLiMiOuX
Изменить тип текста, вы получите номер, а также буквы, которые вы набираете. – Sudz