Задача в ограничении ввода символов в input очень распространенная. Фильтрация номеров телефона, email встречаются очень часто.
Сегодня приведу простой пример — без регулярных выражений — как ограничить ввод символов в текстовое поле.
Сначала пример попроще для общего понимания идеи:
$('input').on('keyup keypress', function(e) {
var letters=' +-()1234567890';
return (letters.indexOf(String.fromCharCode(e.which))!=-1);
});
Данный пример решает задачу — т.е. разрешает ввод только символов с переменной letters. Проблема решается, но, к сожалению, нажатие, например кнопок backspace или delete также будет заблокировано.
Чтобы решить проблему следует воспользоваться следующим кодом:
$('input').on('keyup keypress', function(e) {
if (e.keyCode == 8 || e.keyCode == 46) {}
else
{
var letters=' +-()1234567890';
return (letters.indexOf(String.fromCharCode(e.which))!=-1);
}
});
Как видите, в коде добавилось еще одно условие:
if (e.keyCode == 8 || e.keyCode == 46)
Здесь мы проверяем, не была ли нажата кнопка backspace или delete по коду. Как проверить код нужной Вам кнопки можно узнать здесь.
Таким образом, проводя дополнительную проверку по коду кнопки и внося разрешенные символы в переменную letters мы можем ограничить ввод символов в текстовое поле.