Я нашел этот вопрос . Однако большинство ответов перехватывают нажатие клавиши, проверяют код клавиши и останавливают событие, если оно не является допустимым кодом клавиши.
Есть некоторые проблемы с этим.
Распространенная ошибка среди всех ответов заключается в том, что комбинации клавиш Shift не запрещены, поэтому пользователи могут вводить такие слова, как "@" или "&".
Пользователи по-прежнему могут вставлять в буфер обмена неверные значения.
Когда вы начинаете возиться с событием нажатия клавиши, веб-страница начинает делать странные, неожиданные вещи. Например, если поле имеет фокус и пользователь пытается перезагрузить страницу, нажав command-R
, оно не будет работать. Или они не могут выйти за пределы поля.
Я хотел бы получить решение, которое позволяет нажимать клавишу, а затем проверяет введенное значение на соответствие регулярному выражению и удаляет нежелательные символы.
Я ищу решение по этим направлениям:
Не перехватывает событие нажатия клавиши.
Идеально использовать регулярное выражение после нажатия клавиши.
ОК, если он использует jQuery.
Не требует установки плагина.
Я попробовал эту функцию:
$('input.numerals_only').keypress(function() {
var v = $(this).val();
var no_nonnumerals = v.replace( /[^0-9]/, '' );
$(this).val(no_nonnumerals);
});
Но это не работает. Я все еще могу печатать буквы.
Есть информация о том, почему это не работает? Как я мог изменить это так, чтобы это работало? Другие предложения?