Была у меня одна задача — нужно было запретить ввод русских символов в поле 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. И если одна из них нажата, то наш код проверки нажатой кнопки просто не обрабатывается. Теперь нам нельзя вводить русские буквы и мы можем удалять то, что вводили ранее.