Как заблокировать спецсимволы? - PullRequest
0 голосов
/ 26 марта 2012

Я хочу заблокировать специальный символ в этом коде. Другими словами, пользователь может ввести только буквенно-цифровое значение и использовать клавишу возврата для удаления.

Ошибка : когда я писал code==8 в условии if, тогда разрешались все специальные символы.

<html>
    <head>
        <title>practice</title>
        <script type="text/javascript">
              function noSpecialChar(e){
                    if (e.keyCode)
                        code = e.keyCode;
                    else if (e.which)
                        code = e.which;

                    //code==8                   => backspace
                    //(code>=65 && code<=90)    => alphabets
                    //(code>=48 && code<=57)      => numeric

                    if((code>=65 && code<=90)||(code>=48&&code<=57)||(code==8)){
                        return true;
                    }else{
                        return false;
                    }
              }

        </script>
    </head>
    <body>
        <input type="text" name="txtName" id="txtName" onkeydown=" return noSpecialChar(window.event);"/>
    </body>
</html>

Ответы [ 2 ]

1 голос
/ 26 марта 2012

Правильно выполнить такую ​​фильтрацию сложно. В следующем примере используется код из «JavaScript: Полное руководство», раздел «17.8 Текстовые события». Если вы хотите использовать его, загрузите код с сервера O’Reilly вместо прямой ссылки на него в своем коде. Код использует подпрограмму whenReady.js, которую вы можете загрузить с https://github.com/kukawski/whenReady/blob/master/whenReady.js

<!doctype html>
<script src="whenReady.js"></script>
<script src=
"http://examples.oreilly.com/9780596805531/examples/17.06.InputFilter.js">   
</script>
<label for="txtName">Text:</label><input id="txtName" type="text"
data-allowed-chars=
"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789"
data-messageid="input-error">
<span id="input-error" style="color:red;visibility:hidden">Alphanumeric
characters only</span>

Возможно, было бы немного лучше изменить код, чтобы вместо атрибута data- он использовал атрибут pattern, что дало бы некоторую функциональность в некоторых браузерах даже при отключенном JavaScript, а также гибкость в определении набор разрешенных символов. Но тогда вам потребуется эффективно реализовать синтаксический анализатор регулярных выражений, чтобы усиление могло не соответствовать необходимой работе.

0 голосов
/ 25 мая 2014

У меня есть скрипт, для которого разрешены символы:

Рассмотрим ваш html: <input type="text" id="yourID"></input>

<script>
        document.getElementById("yourID").onkeypress = function(e) {
        var chr = String.fromCharCode(e.which);
        if ("Which characters are allowed? Type them instead of these, without any seperation".indexOf(chr) < 0)
            return false;
    };
</script>

Если вы хотите разрешить только буквы и цифры, используйте это:

<script>
        document.getElementById("yourID").onkeypress = function(e) {
        var chr = String.fromCharCode(e.which);
        if ("1234567890qwertyuioplkjhgfdsazxcvbnmQWERTYUIOPLKJHGFDSAZXCVBNM".indexOf(chr) < 0)
            return false;
    };
</script>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...