У меня есть поле ввода текста, которое должно быть ограничено в зависимости от того, какие символы можно вводить. В качестве одной из форм защиты от ошибочного ввода я пытаюсь даже не допустить, чтобы пользователь вводил неверные данные. Ввод может быть [a-zA-Z -._] символов и ограничен 32 символами.
<input id="aliasEntry" type="text" maxlength="32">
Как видите, у меня уже есть ограничение в 32 символа, и пользователь не может больше печатать после того, как предел достигнут. Но у меня проблема с предотвращением ввода неправильных символов.
Я пытался использовать ловушки событий jkey для .keypress () и .keydown (), чтобы сделать что-то похожее на следующее:
$("#aliasEntry").keypress(function(e)
{
var code = e.which || e.keyCode;
// 65 - 90 for A-Z and 97 - 122 for a-z 95 for _ 45 for - 46 for .
if (!((code >= 65 && code <= 90) || (code >= 97 && code <= 122) || code == 95 || code == 46 || code == 45))
{
var text = $("#aliasEntry").val();
text = text.substring(0,text.length);
$("#aliasEntry").val(text);
}
});
Но проблема в том, что браузеры всегда вставляют напечатанный символ в текстовое поле ПОСЛЕ того, как событие было обработано, что делает код бесполезным, потому что символ, который я пытаюсь удалить, еще не введен. Есть ли способ просто запретить браузеру вставлять символ в текстовое поле после того, как пользователь его напечатает?