Javascript. jQuery. Как разрешить ввод определенных символов?


Задача в ограничении ввода символов в 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 мы можем ограничить ввод символов в текстовое поле.

, ,

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *