AS3, как вызвать функцию поиска, когда элемент выбран в выпадающем списке? - PullRequest
0 голосов
/ 03 марта 2011

У меня есть выпадающий список, который действует как автозаполнение для приложения поиска.Функция поиска запускается кнопкой поиска.Я также хочу активировать функцию поиска, когда элемент в выпадающем списке является двойным или нажатием одной кнопки.Код:

 //for triggering search function from combobox(search_complex) it will be   
   something like that but i am not sure 
   search_complex.addEventListener(Event.CHANGE, search);
   search(event:Event):void{//something will come hereto use "selctedItem" to
   trigger search function}


 //search function which is working fine by pressing search button
 bt_search.addEventListener(MouseEvent.CLICK, search);
 function search(MouseEvent):void{
 currentUserbase = [];
 for (var n:int = 0; n<allUserbase.length; n++)
 { 
 for (var k:int = 0; k<allUserbase[n].complex.length; k++)
 {
 if ((allUserbase[n].complex[k].value.toLowerCase() == 
 search_complex.text.toLowerCase() || search_complex.text==""))
 {   
 currentUserbase.push(allUserbase[n]);
 }
 }
 }
 updateList();
 }//end search

Ответы [ 2 ]

1 голос
/ 03 марта 2011

Я не понимаю, чего именно вы хотите.

Это правда, что у вас есть функция поиска, которая будет работать нормально. Теперь вам не нужен для каждого события отдельный обработчик. Достаточно использовать один для всех событий. В качестве параметра функции используйте тип «Событие», потому что все остальные события наследуются от этого базового класса.

Проверьте мой код. CD мой комбобокс. Этот пример написан на flex3

<mx:Script>
    <![CDATA[
        import mx.collections.ArrayCollection;
        [Bindable] private var arr:ArrayCollection = new ArrayCollection([
            {name:"Alexander"},
            {name:"Bernd"},
            {name:"Carl"}
        ]);

        private function init():void
        {
            cb.addEventListener(MouseEvent.CLICK,search);
            cb.addEventListener(MouseEvent.DOUBLE_CLICK,search);
            cb.addEventListener(Event.CHANGE,search);
        }

        private function search (event:Event) :void
        {
            trace (event.type);
        }
    ]]>
</mx:Script>
0 голосов
/ 03 марта 2011

Я верю, что вы на правильном пути.Попробуйте:

search_complex.addEventListener(Event.CHANGE, search);
bt_search.addEventListener(MouseEvent.CLICK, search);

function search(event:Event):void
{
  currentUserbase = [];
  for (var n:int = 0; n<allUserbase.length; n++)
  { 
    for (var k:int = 0; k<allUserbase[n].complex.length; k++)
    {
      if ((allUserbase[n].complex[k].value.toLowerCase() ==  search_complex.text.toLowerCase() || search_complex.text==""))
      {   
        currentUserbase.push(allUserbase[n]);
      }
    }
  }

  updateList();

}//end search

Вы сможете получить выбранный элемент в вашем выпадающем списке, используя search_complex.selectedItem.label или search_complex.selectedItem.label в зависимости от того, какое свойство вам нужно использовать.

...