Запрет ввода символов в поле

Иногда нужно запретить пользователю вводить определенные символы или, наоборот, разрешить вводить только определенные.

Здесь http://www.community.terrasoft.ru/forum/topic/9345 было решение относительно цифр, но это не очень удобно, когда нужно расширять список разрешенных символов.

Предлагаю свой вариант:

function edtQuantityOnKeyPress(Control, Char) {
        Char.Value = CharFilter(Char.Value, true, '1234567890+-'); // цифры 0-9 и "+", "-"
}

function CharFilter(CharCode, Allow, Exceptions) {
        var Result = CharCode;
        var Action = !!Allow; //разрешаем или запрещаем
        if (Result == 8) return 8; // исключаем backspace
        if (!!Exceptions) {
                var CharsArray = Exceptions.split('');
                for (var i = 0; i CharsArray.length; i++) {
                        if (Result == CharsArray[i].charCodeAt()) return Result*Action;
                }
        return Result*!Action;
        }
        return Result*Action;
}

Надо также заметить, что в поле все равно можно вставить (ctrl+V или через контекстное меню) запрещенные символы. Поэтому, если это совсем критично, надо подходить с другой стороны - DatasetBeforePost, DataChange или btnOKOnClick.

Нравится

Поделиться

0 комментариев
Показать все комментарии