Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Flash > Flex

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему Ответ
Старый 30.08.2011, 13:36
ekonomizer вне форума Посмотреть профиль Отправить личное сообщение для ekonomizer Найти все сообщения от ekonomizer
  № 1  
Ответить с цитированием
ekonomizer

Регистрация: Aug 2011
Сообщений: 22
По умолчанию Валидация в Автокомплитере

Здравствуйте помогите пожалуйста разобраться.
У меня есть компонент Автокомплита - представляет собой смесь DropDownList и TetxInputa.



Текст автокомплитов (список вариантов) берется из ArrayCollection.
Также в нем есть кнопка с крестиком - удаляет весь текст в ней вся проблема.

Хочу повесить на автокомплит валидацию - если пользователь ничего не ввел или ввел какую нибудь хрень не из массива то рядом горит крест, если ввел или выбрал строку из массива то убираю крестик и делаю visible галочку.
Компонент:
Код:
<ns:AutoComplete id="autoComplete_1"
		 dataProvider="{areas}"
		 searchMode="sync" 
		 keyDown="autoComplete_1_keyDownHandler(event)"
		 valueCommit="autoComplete_valueCommitHandler(event)"
Обработчик:
Код AS3:
protected function autoComplete_valueCommitHandler(event:FlexEvent):void
{
    // Для простоты проверяю только на одно значение.
    if (autoComplete_1.text != "Ярославская")
	redArea();
}
Проблема заключается в том как какое правильно выбрать событие для DropDownList - а именно кнопки удаления текста. Для TextInput выбрал keyDown и каждый раз сверяю попал ли юзер в данные из массива или нет все работает хорошо.

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

Посоветуйте пожалуйста как быть в этой ситуации и как лучше организовать валидацию.

Старый 30.08.2011, 14:55
saprahan вне форума Посмотреть профиль Отправить личное сообщение для saprahan Найти все сообщения от saprahan
  № 2  
Ответить с цитированием
saprahan

Регистрация: Mar 2011
Сообщений: 48
Ваш компонент на самом деле - чистый ComboBox. Вызов логики валидации стоит повесить на оверрайд сеттеров selectedItem'a и dataProvider'a. Через эвент в роли мидлмэна если желаете

Старый 30.08.2011, 16:02
ekonomizer вне форума Посмотреть профиль Отправить личное сообщение для ekonomizer Найти все сообщения от ekonomizer
  № 3  
Ответить с цитированием
ekonomizer

Регистрация: Aug 2011
Сообщений: 22
Извините уточните пожалуйста что именно нужно менять в SelectedItem и DataProvider.
Я flexом занимаюсь первую неделю поэтому не оч. соображаю что тут к чему.

Я так понял нужно создать новый класс занаследовать его от компонента Autocompliter. И переопределить в нем два метода set selectedItem и set DataProvider?

И что такое мидлмэн? Не нашел такого свойства у комбобокса.

Старый 30.08.2011, 16:26
ekonomizer вне форума Посмотреть профиль Отправить личное сообщение для ekonomizer Найти все сообщения от ekonomizer
  № 4  
Ответить с цитированием
ekonomizer

Регистрация: Aug 2011
Сообщений: 22
Да, спасибо! Поставил ComboBox вместо чужой библиотеки, так будет проще.

Создать новую тему Ответ Часовой пояс GMT +4, время: 07:09.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 07:09.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.