Как я могу поймать события редактирования и выбора в редактируемом поле со списком? - PullRequest
0 голосов
/ 15 февраля 2011

У меня есть редактируемый mx: Combobox . Я хочу поймать два события:

  1. Когда пользователь вводит какой-либо текст или редактирует какой-либо текст.

  2. Когда пользователь меняет выбор (выбирает элемент в поле со списком).

Возможно ли это? Я использовал change event, но он срабатывает в обоих случаях, и я не могу его дифференцировать. Есть ли лучший способ сделать это?

1 Ответ

0 голосов
/ 15 февраля 2011

Использовать событие изменения для выбранного элемента, использовать событие keyUp для редактирования текста (при нажатии клавиши Shift + Key дважды запускает keyUp). Изменение будет запущено для обоих, но просто проверьте, является ли selectedItem нулевым, чтобы обойти это. Кроме того, редактируемый comboBox недоступен во Flex 4, поэтому, если вы планируете в ближайшее время перейти на Flex 4, помните следующее:

            private var ac:ArrayCollection;

            private function onInit():void{

                ac = new ArrayCollection([{name:"john"}, 
                    {name:"Stephen"}]);
                myCombo.dataProvider = ac;
                myCombo.labelField = "name";
            }

            private function onComboChange(event:Event):void{
                if(event.target.selectedItem != null){
                    trace("Item Selected: " + event.target.selectedLabel);
                }
            }

            private function onKeyUp(event:Event):void{
                trace(event.target.text);
            }

    <mx:ComboBox id="myCombo" x="50" y="10" editable="true" change="onComboChange(event)"
                 keyUp="onKeyUp(event)"/>
...