Member 13427032 Ответов: 1

Могу ли я выбрать определенные специальные символы, которые не разрешены в текстовом поле?


Я не хочу, чтобы разрешались только специальные символы, такие как < > и &

Что я уже пробовал:

а вот код, который я ищу в интернете, но этот код не принимает все специальные символы.
<pre><html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title></title>
    <style type="text/css">
        body
        {
            font-size: 9pt;
            font-family: Arial;
        }
    </style>
</head>
<body>
    Alphanumeric value:
    <input type="text" id="text1" onkeypress="return IsAlphaNumeric(event);" ondrop="return false;"

         />
    <span id="error" style="color: Red; display: none">* Special Characters not allowed</span>
    <script type="text/javascript">
        var specialKeys = new Array();
        specialKeys.push(8); //Backspace
        specialKeys.push(9); //Tab
        specialKeys.push(46); //Delete
        specialKeys.push(36); //Home
        specialKeys.push(35); //End
        specialKeys.push(37); //Left
        specialKeys.push(39); //Right
        function IsAlphaNumeric(e) {
            var keyCode = e.keyCode == 1 ? e.charCode : e.keyCode;
            var ret = ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 65 && keyCode <= 90) || (keyCode >= 97 && keyCode <= 122) || (specialKeys.indexOf(e.keyCode) != -1 && e.charCode != e.keyCode));
            document.getElementById("error").style.display = ret ? "none" : "inline";
            return ret;
        }
    </script>
</body>
</html>

1 Ответов

Рейтинг:
6

A_Griffin

Попробуйте вместо этого эту функцию:

function IsAlphaNumeric(e) {
        var keyCode = e.keyCode == 1 ? e.charCode : e.keyCode;
        var ret = ((keyCode > 31 && keyCode < 127) && keyCode != 38 && keyCode != 60 && keyCode != 62);
            document.getElementById("error").style.display = ret ? "none" : "inline";
            return ret;
}
Это позволит любому персонажу с код ASCII[^] от 32 до 126, кроме < и > и &

Вы можете легко добавлять или исключать другие.

Кроме того, просто добавьте: Не полагайтесь на проверку JavaScript (клиентская сторона) для пользовательского ввода. Вы всегда должны выполнять одни и те же проверки в коде (VB, C#, что угодно) и на сервере.


Member 13427032

Большое вам спасибо, что этот код работает, и я добавлю код проверки в c#. Спасибо снова

Member 13427032

Привет, сэр, Добрый день, я добавляю код ключа == 13, но ввод все еще не работает. и я проверяю по ASCII-коду, что значения enter там нет. не могли бы вы помочь мне с ключом ввода

A_Griffin

что вы ожидаете, когда нажмете enter? Это текстовое поле в одну строку...

Member 13427032

у меня есть текстовое поле, которое является многострочным, и когда я нажимаю кнопку enter, оно показывает сообщение об ошибке (специальные символы не разрешены), можете ли вы помочь мне, когда нажимаете enter, он добавит новую строку в текстовое поле. Пожалуйста

A_Griffin

Просто измените одну строку на:
ВАР рэт = (данные keyCode == 13) || (((ключ &ГТ; 31 &&усилителя; ключ &ЛТ; 127) &&усилителя; ключ != 38 &&усилителя; ключ != 60 &&усилителя; ключ != 62));

Member 13427032

Большое вам спасибо за вашу потрясающую работу.