запретить ввод не текстовых символов в текстовом поле - PullRequest
1 голос
/ 02 октября 2009

Так как я думаю, что люди сталкивались с этим много времени раньше, чем я, и может быть какое-то стандартное решение ... Кто-нибудь может дать подсказку, как запретить пользователю вводить не текстовые символы ascii в текстовое поле.

Ответы [ 2 ]

2 голосов
/ 02 октября 2009

Меня лично раздражает работа со стандартными режимами взаимодействия, но если вам нужно отфильтровать ввод с клавиатуры, вы можете сделать это, перехватывая события нажатия клавиш и отменяя те, которые вам не нужны:

var allowed = /[a-zA-Z0-9]/; // etc.

window.onload = function () {
    var input = document.getElementById("test");

    input.onkeypress = function () {
        // Cross-browser
        var evt = arguments[0] || event;
        var char = String.fromCharCode(evt.which || evt.keyCode);

        // Is the key allowed?
        if (!allowed.test(char)) {
            // Cancel the original event
            evt.cancelBubble = true;
            return false;
        }
    }
};

А с jQuery все лаконичнее и красивее:

var allowed = /[a-zA-Z0-9]/; // etc.

$(function () {
    var input = document.getElementById("test");

    $("#input").keypress(function (e) {
        // Is the key allowed?
        if (!allowed.test(String.fromCharCode(e.keyCode || e.which))) {
            // Cancel the original event
            e.preventDefault();
            e.stopPropagation();
        }
    });
});
1 голос
/ 02 октября 2009

Если вы ищете краткое решение ASP.NET, вы можете использовать элемент управления RegularExpressionValidator, чтобы ограничить содержимое ASP.NET TextBox. Вам не нужно писать какой-либо серверный или клиентский код, кроме определения тега страницы и регулярного выражения, используемого для проверки. Проверка будет проверена с обеих сторон.

Например:

<asp:TextBox id="txtItem" runat="server" MaxLength="50"></asp:TextBox>
<asp:RegularExpressionValidator id="SomeFieldValidator" runat="server" 
  CssClass="SomeClass" ControlToValidate="txtItem" 
  ErrorMessage="This field only accepts ASCII input." Display="Dynamic"
  ValidationExpression="^[A-Za-z0-9]*$"></asp:RegularExpressionValidator>

В этом фрагменте txtItem - это TextBox, который нуждается в проверке. элемент управления SomeFieldValidator связан с помощью атрибута ControlToValidate с элементом управления txtItem . Атрибут ValidationExpression является регулярным выражением, которое используется для принудительного применения содержимого TextBox. Согласно документации, это выражение должно быть написано так, чтобы оно было совместимо с регулярными выражениями JScript и .NET Regex. Кроме того, я установил здесь регулярное выражение только для буквенно-цифровых символов. Возможно, вы захотите использовать что-то вроде ^ [\ w \ s] * $ вместо - если вы на самом деле заинтересованы в печатных символах, а не просто в ASCII.

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

Также удобен элемент управления RequiredFieldValidator . Вы можете связать их с TextBox элементами управления, к которым также прикреплен RegularExpressionValidator . Они обрабатывают случай, когда требуется ввод в TextBox .

Вот несколько справочных ссылок.

RegularExpressionValidator Control на MSDN

RequiredFieldValidator Control на MSDN

Классы символов в MSDN (для регулярных выражений)

Ссылка на объект JavaScript RegExp

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