如何捕获可编辑组合框上的编辑和选择事件?

发布于 2024-10-17 07:45:58 字数 232 浏览 3 评论 0原文

我有一个可编辑的 mx:Combobox。我想捕获两个事件:

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

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

是否可以?我一直在使用 change 事件,但在这两种情况下都会触发它,我无法区分它。有更好的方法吗?

I have an editable mx:Combobox. I want to catch two events:

  1. When a user enters some text, or edits some text.

  2. When a user changes the selection (selects an item from the combo box).

Is it possible? I have been using change event, but it is fired in both cases and I can't differentiate it. Is there a better way of doing this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

缱倦旧时光 2024-10-24 07:45:58

对所选项目使用更改事件,使用 keyUp 事件进行文本编辑(注意按 Shift+Key 会触发 keyUp 两次)。两者都会触发更改,但只需检查 selectedItem 是否为 null 即可解决此问题。此外,可编辑的组合框在 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)"/>

Use change event for selected item, use keyUp event for text editing (note hitting Shift+Key fires keyUp twice). Change will be fired for both, but just check if the selectedItem is null to get around this. Also, editable comboBox is not available in Flex 4, so if your thinking of moving to Flex 4 soon, keep this in mind:

            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)"/>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文