|
Отловить событие потери фокуса полем ввода |
☑ |
0
dizpers
22.05.12
✎
21:00
|
Есть поле ввода с датой. После ввода этой даты мне надо ее проверить - если дата меньше текущей, то вывести сообщение об ошибке, поставить фокус на поле ввода и ждать пока пользователь снова введет данные, как только ввел новые данные - снова проверить и тд
Пробую делать вот так
на событие ПриИзменении поля вешаю процедуру с таким кодом (ДатаСеанса - реквизит документа, связанный с этим полем ввода)
Если ДатаСеанса < НачалоДня(ТекущаяДата()) Тогда
Режим = РежимДиалогаВопрос.ДаНет;
Если Вопрос("Нельзя купить билет на старую дату. Установить сегодняшнюю дату?", Режим, 0) = КодВозвратаДиалога.Да Тогда
ДатаСеанса = НачалоДня(ТекущаяДата());
Иначе
Возврат
КонецЕсли
КонецЕсли;
При этом что получаю - неправильно ввел дату, выпало сообщение об ошибке, нажал ДА - все ок, дата текущая. Но в другом кейсе - когда нажал нет, дата осталась введенная неправильно и при нажатии к примеру кнопки таб фокус переключается на след. элемент и в итоге - кривая дата в поле ввода.
Первая идея, которая пришла в голову по поводу решения этой проблемы - как то отловить перевод фокуса на другой элемент. Но не знаю как сделать такое. Подскажите, пожалуйста, как такую проблему решить?
|
|
1
vicof
22.05.12
✎
21:20
|
Проверяй в событии ПередЗаписью
|
|
2
МихаилМ
22.05.12
✎
21:23
|
"поставить снова фокус" - а если пользователь не хочет вводить данный а хочет закрыть окно
|
|
3
dizpers
22.05.12
✎
21:26
|
(2) после установки фокуса нажмет esc
|
|
4
dizpers
22.05.12
✎
21:27
|
(1) в зависимости от выбранной даты подгружаются различные массивы данных в списки выбора (фильмы по данной дате например)
а событие перед записью сработает когда по идее нажали ОК в форме документа
|
|
5
aleks-id
22.05.12
✎
21:28
|
Иначе
Сообщить("А вот хрен тебе, умник!");
ДатаСеанса = НачалоДня(ТекущаяДата());
КонецЕсли
|
|
6
dizpers
22.05.12
✎
21:32
|
(5) кстати, как вариант - не спрашивать пользователя вообще, если указал кривую дату, сообщить об этом и установить сегодняшнюю
|
|
7
vicof
22.05.12
✎
21:55
|
(4) Так это проблемы пользователя уже. Захотел на одну дату, захотел - на другую.
|
|
8
dizpers
22.05.12
✎
22:17
|
(7) Ну просто не логично продавать билеты на 1 января, если сейчас 23 мая. Я считаю, что такие проверки нужны.
|
|