Запретить ввод некоторых символов.

Как запретить ввод в поле ввода определенных символов?
Или как разрешить только ввод букв, цифр и '/'?

Нравится

10 комментариев

Приведу пример реализации проверки вводимых данных в поле «Средство связи 1» карточки [Контакт], когда тип средства связи равен «Телефон» и «E-mail»
1. Необходимо открыть сервис scr_ContactEdit, найти функцию function btnOKOnClick(Control)
2. В данной функции реализовать проверку для разных типов средства связи. Проверку можно реализовать непосредственно в этой же функции, как представлено ниже (выделено жирным), так и сформировав в виде отдельной функции, которую потом следует вызывать.
В выделенном фрагменте кода выполняется проверка на тип средства связи и вводимые данные, в поле «Средство связи1».

function btnOKOnClick(Control) {
var Dataset = dlData.Dataset;
if (!CheckContactData(Dataset)) {
return;}
//если тип средства связи1 равен «Телефон»
if (Dataset.Values('Communication1TypeID') == '{DBCB6A43-D99F-45AE-9B41-037DE595242E}') {
if ((Dataset.Values('Communication1').length > 7) &&
(Dataset.Values('Communication1').length < 11) &&
IsIntegerValue((Dataset.Values('Communication1'))) )
{

scr_BaseDBEdit.btnOKOnClick(Control);

} else {

ShowWarningDialog('Формат должен быть следующего типа: телефон цифры от 7-11 знаков');
return;
}
return;
}

//если тип средства связи1 равен «Email»

if (Dataset.Values('Communication1TypeID') == '{7A628D16-D7D0-4979-B8BA-B64EF54A0366}') {
if (IsCharInString('@', Dataset.Values('Communication1')))
{
scr_BaseDBEdit.btnOKOnClick(Control);
} else {
ShowWarningDialog('Формат должен быть следующего типа:email должен содержать символ @');
return;
}
return ;
}
scr_BaseDBEdit.btnOKOnClick(Control);
}

получается, что ввести заведомо некорректное значение можно, а я хочу запретить ненужные символы на этапе ввода.

В таком случае сделайте проверку сравнения каждого символа (OnKeyPressDown), при вводе ненужного - присваиваеть ему значение null.

На просторах сети был найден пример запрета на ввод кириллицы:

function withoutCyr(input) {
var value = input.value;
var re = /а|б|в|г|д|е|ё|ж|з|и|ё|к|л|м|н|о|п|р|с|т|у|ф|х|ц|ч|ш|щ|ъ|ы|ь|э|ю|я/gi;
if (re.test(value)) {
value = value.replace(re, '');
input.value = value;
}
}

"Гакало Игорь Александрович" написал:В таком случае сделайте проверку сравнения каждого символа (OnKeyPressDown), при вводе ненужного - присваиваеть ему значение null.

в моей версии (3.0.2.244) нет такого обработчика.

"Гакало Игорь Александрович" написал:На просторах сети был найден пример запрета на ввод кириллицы:

function withoutCyr(input) {
var value = input.value;
var re = /а|б|в|г|д|е|ё|ж|з|и|ё|к|л|м|н|о|п|р|с|т|у|ф|х|ц|ч|ш|щ|ъ|ы|ь|э|ю|я/gi;
if (re.test(value)) {
value = value.replace(re, '');
input.value = value;
}
}

а это опять проверка после ввода... значит не получится то чего я хочу?

Не обязательно привязывать сравнение к OnKeyPressDown. Для обработки найдите другое событие.

"Гакало Игорь Александрович" написал:Не обязательно привязывать сравнение к OnKeyPressDown. Для обработки найдите другое событие.

например какое?
там их всего-то 5 штук: Клик, ДаблКлик, Энтер, Эксит и Рэсайз...

На изменение набора данных.
Чтоб не гадать пробуйте на dlDataOnDatasetDataChange (на датасете). При попытке изменения значения любого из полей будет задействована эта функция.

ага... это вариант.
спсб...

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