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