【问题标题】:Spark Button - why doesn't pressing the enter key fire click event?Spark Button - 为什么不按回车键触发点击事件?
【发布时间】:2011-11-12 18:24:05
【问题描述】:

我有点困惑,为什么这不是默认行为?

那么,如何检测按钮上按下的回车键并触发 click 事件处理程序? (例如在 TextInput 字段中有一个 'enter' 事件)

谢谢

【问题讨论】:

    标签: apache-flex button click enter flex-spark


    【解决方案1】:

    编辑:回滚到原始帖子,只有在选择按钮时才会触发事件

    当用户将焦点放在按钮上时触发 enter 事件,与键盘 enter 键无关。如果我没记错的话,在 Flash 中激活按钮的默认键是空格键。您可以通过执行以下操作来使用 enter:

    myButton.addEventListener(KeyboardEvent.KEY_DOWN, onMyButtonKeyDown);
    
    private function onMyButtonKeyDown(event:KeyboardEvent):void
    {
        //simulate click if enter pressed
        if(event.keyCode == Keyboard.ENTER)
            myButton.dispatchEvent(new MouseEvent(MouseEvent.CLICK));
    }
    

    【讨论】:

    • 您好,Exort - 感谢您的回复。 Spark Button 没有 .selected 属性?
    • 没问题导出。如果您可以为您的建议发布一个工作代码示例,我会尝试一下
    • 回滚答案并删除 .selected 部分,当我写的时候有些电线被触及,只有当焦点在按钮上时才会触发事件
    【解决方案2】:

    编辑:忽略我之前发布的所有内容。

    您可以在火花按钮上使用 keyDown 事件并使用 KeyboardEvent 创建事件处理程序。

            <s:Button label="Submit" keyDown="enter_pressed(event)" id="submit" click="submit_clickHandler(event)"/>
    
            protected function enter_pressed(event:KeyboardEvent):void { 
                if(event.charCode == Keyboard.ENTER){
                    submit.dispatchEvent(new MouseEvent(MouseEvent.CLICK)); 
                }
            }
    

    【讨论】:

    • 谢谢 Mike - 你能解释一下点击按钮时输入是如何被拾取的吗?也许我有点不清楚 - 我想要的行为是当焦点在按钮上时,当用户按下回车键时,这应该触发按钮点击。
    • 哦!我很抱歉我误读了你的问题,我相信。你想处理按钮上的输入并从那里发送一个点击事件。我将不得不进一步研究
    • 可能查看 keyDown 事件,并在处理程序中检查是否按下了回车键
    • “提交”指的是什么?
    • 迈克你试过了吗?我只是想知道选择按钮时如何触发“enter_pressed”?如果你愿意,它是如何连接到按钮的
    猜你喜欢
    • 1970-01-01
    • 2013-08-12
    • 2017-03-26
    • 1970-01-01
    • 2019-10-06
    • 1970-01-01
    • 2014-01-05
    • 2013-07-01
    • 2021-05-27
    相关资源
    最近更新 更多