2011-02-15 80 views
0

我有一个可编辑mx:Combobox。我想捕获两个事件:如何捕获可编辑组合框上的编辑和选择事件?

  1. 当用户输入一些文本或编辑一些文本时。

  2. 当用户更改选择(从组合框中选择一个项目)。

这可能吗?我一直在使用change event,但它在两种情况下被解雇,我无法区分它。有没有更好的方法来做到这一点?

+0

我不认为有对both.Only不同的事件改变事件你可以做的是,一旦更改事件被触发,在eventHandler中,你可以比较这些值,编写一个逻辑来区分这两个事件。 – Neeraj 2011-02-15 06:41:34

回答

0

使用所选项目的更改事件,使用keyUp事件进行文本编辑(注意按住Shift + Key触发键盘两次)。更改将被触发,但只是检查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)"/>