Предотвращение ввода специальных символов в текстовое поле html - PullRequest
6 голосов
/ 24 августа 2010

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

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

Ответы [ 2 ]

5 голосов
/ 24 августа 2010

Вы используете jQuery, поэтому посмотрите это: http://api.jquery.com/event.preventDefault/. Просто вызовите e.preventDefault(), если символ окажется недопустимым, и это должно предотвратить действие браузера по умолчанию, которое в этом случае будетвставка символа.

0 голосов
/ 26 декабря 2013

Используйте ваш ввод, как это

<input maxlength="32" onKeyUp="chText()" onKeyDown="chText()" id="aliasEntry"/>

и сделать chText() функцию на JavaScript написать в нем этот код ниже

function chText()
{
    var str=document.getElementById("aliasEntry");
    var regex=/[^a-z]/gi;
    str.value=str.value.replace(regex ,"");
}

не разрешит вход ни одному символу, кроме a-z и A-Z

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...