2017-01-18 5 views
2

У меня есть элемент ввода номера HTML: <input type="number">. Проблема в том, что я могу также ввести следующие символы: + - e E , ., которые я не хочу, чтобы пользователь мог писать.Как ограничить "+ - e,". от ввода номера HTML?

Как их ограничить?

+2

Возможный дубликат [как заблокировать или ограничить специальные символы из полей ввода с помощью jquery?] (Http://stackoverflow.com/questions/895659/how-do-i-block-or-restrict-special-characters -from-input-fields-with-jquery) – elementzero23

+0

@ elementzero23: Это не вопрос jQuery. –

+0

Это действительно хороший вопрос, и я надеюсь, что W3C когда-нибудь придумает решение для HTML. – Turbo

ответ

4

Это было бы путь для достижения этой цели:

var ageInput = document.getElementById("age") 
 

 
ageInput.addEventListener("keydown", function(e) { 
 
    // prevent: "e", "=", ",", "-", "." 
 
    if ([69, 187, 188, 189, 190].includes(e.keyCode)) { 
 
    e.preventDefault(); 
 
    } 
 
})
<input type="number" id="age">

+0

Следуя за [JSFiddle] (https://jsfiddle.net/wg5cev7s/) сделал это для меня (работает в моем приложении). Я изменил его совсем немного, но ваш ответ дал мне ключ. Спасибо – Wulthan

+0

Это не работает в браузере телефона – prgmrDev

+0

@Wulthan, эта скрипка будет слишком ограничивать «backspace» –

0

Вы не должны полагаться только на <input type="number">, поскольку это будет работать только в современных браузерах с различным поведением в зависимости от браузера.

Использование JQuery для выполнения дополнительных проверок (с регулярным выражением):

$('#my-input').keypress(function() { 

    var inputValue = $(this).val(); 
    var reg = /^\d+$/; 

    if (reg.test(inputValue)){ 
     alert("input value is integer"); 
    } else { 
     alert("input value is not an integer"); 
    } 
}); 
+0

- это 'data' равна' inputValue'? –

+0

'' 1 '=== parseInt (' 1 ', 10) 'false. –

+0

Правильно, тогда вам лучше использовать регулярное выражение. –

0

Чтобы ограничить эти ценности, захватить событие нажатия клавиш с помощью javascript и предотвратить ввод этих символов. Мы фиксируем keyCode из события и ограничиваем ввод, чтобы эти символы не позволяли их кодами ASCII.

document.getElementById('my-number-input').onkeypress = function(e) { 
    if(!e) e = window.event; 
    var keyCode = e.keyCode || e.which; 
    if(!((keyCode >= 48 && keyCode <= 57) || 
    (keyCode >=96 && keyCode <= 105))) { 
    e.preventDefault(); //This stops the character being entered. 
    } 
} 

Оператор IF выше утверждает, что если скан не находится в диапазоне 0-9 на клавиатуре (включая цифровую клавиатуру), то не добавляйте символ ввода.

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