Предотвращение ввода специальных символов в текстовое поле html

У меня есть поле ввода текста, которое должно быть ограничено в зависимости от того, какие символы можно вводить. В качестве одной из форм защиты от ошибочного ввода я пытаюсь даже не позволить пользователю вводить неправильные данные. Ввод может быть [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);
    }
});

Но проблема в том, что браузеры всегда вставляют набираемый символ в текстовое поле ПОСЛЕ событие было обработано, что делает код бесполезным, потому что символ, который я пытаюсь устранить, еще не введен. Есть ли способ просто запретить браузеру вставлять символ в текстовое поле после того, как пользователь его напечатает?

6
задан JDC 23 August 2010 в 22:50
поделиться