Запрещаем вводить определенные символы в поле на jQuery

Была у меня одна задача — нужно было запретить ввод русских символов в поле input, но как ее решить с ходу я не знал, поэтому пошел бороздить просторы интернета. Первое, что я нашел — это следующий код

$('input').on('keyup keypress', function(e) {
    var letters=' 1234567890,.';
	return (letters.indexOf(String.fromCharCode(e.which))!=-1);
});

Схема, вроде, рабочая. Нужно просто в переменную letters добавить свои значения, которые МОЖНО вводить. В примере выше вводить можно только цифры, пробел, запятую и точку. НО! У данного кода есть существенный изъян, т.к. он проверяет нажатие кнопки. А если мыхотим нажать Delete или Backspace, чтобы удалить неправильные символы?! Вот тут и пришлось помучаться и написать небольшие костыли к данному коду.

$('input').on('keyup keypress', function(e) {
   if (e.keyCode == 8 || e.keyCode == 46) {}
   else
     {
       var letters=' 1234567890,.()@zxcvbnmasdfghjklqwertyuiopQWERTYUIOPLKJHGFDSAZXCVBNM-';
                    return (letters.indexOf(String.fromCharCode(e.which))!=-1);
                }
           });

Вот моя рабочая версия кода. Здесь мы проверяем еще 2 кнопки — Delete и Backspace. И если одна из них нажата, то наш код проверки нажатой кнопки просто не обрабатывается. Теперь нам нельзя вводить русские буквы и мы можем удалять то, что вводили ранее.

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

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

Scroll Up