Здравствуйте подскажите пожалуйста как реализовать след. задачу . есть форма следующего вида
<form id="form" onsubmit="return false">
Имя:<br />
<input type="text" class="req_field" name="username" /><br/>
Комментарий:<br/>
<textarea rows="5" cols="30" name="comment" class="req_field"></textarea><br />
<!--<input type = "button" value="Отправить">-->
<button type="submit">Отправить</button>
</form>
необходимо Разрешить ввод только символов [8, 9, 13, 16, 17, 32, 37, 39, 46, 65-122, 189]
При вводе недопустимого символа вывести alert('Недопустимый символ') и удалить этот символ
я сделал это так
$(function(){
var mas = [0,8, 9, 13, 16, 17, 32, 37, 39, 46,56, 189];
var chrcd=0;
var str = '';
$('#form .req_field').on('keyup',function(e){
if (!mas.find_in_array(chrcd)) {
alert('введен недопустимый символ! :' +chrcd);
str = $(this).val();
$(this).val(str.slice(0, -1));
}
});
$('#form .req_field').on('keypress',function(e){
chrcd=e.charCode;
console.log(e.charCode);
});
Array.prototype.find_in_array = function(needle) {
for(var i = 0, l = this.length; i < l; i++) {
if(this[i] == needle) {
return true;
}
}
return false;
}
});
Проблема в том, что если я ввел последовательность из разрешенных символов а потом ввожу неразрешенный, скрипт его удаляет. Но если я потом хочу стереть клавишей backspace (ее нажатие разрешено) оставшиеся символы, скрипт каждый раз выводит алерт с чаркодом этого самого неразрешенного символа. Как исправить эту проблему?