TextInput和弹出窗口上的Flex focusOut事件不会删除焦点?

时间:2011-07-21 17:07:35

标签: flex events focus flash-builder

我有一个包含多个字段的flex应用程序和一个带有focusOut事件的文本字段:

<mx:FormItem label="Last" x="226" y="1">
    <s:TextInput id="lastNameClientTextInput" text="@{_currentEditClient.lastName}" change="textFieldChangeCapitalize(event)" focusOut="lastNameClientTextInput_focusOutHandler(event)"/>
</mx:FormItem>

正如预期的那样,当我在输入值后选中或单击该字段时,它会执行我的“lastNameClientTextInput_focusOutHandler”方法,该方法只会弹出一个新窗口:

protected function lastNameClientTextInput_focusOutHandler(event:FocusEvent):void
        {

                clientSearchPopUp = new ClientListWindow();
                PopUpManager.addPopUp(clientSearchPopUp, this, true);
                PopUpManager.centerPopUp(clientSearchPopUp);                    

        } 

该窗口将执行“PopUpManager.removePopUp(this);”当用户点击关闭按钮时。

然而,问题是当窗口关闭时,焦点重新回到lastNameClientTextInput!我无法点击或跳出该字段!

当我选中时,我最初看到ibeam光标从姓氏字段移动到Tab键顺序(地址)中的下一个字段,然后弹出我的窗口。当我关闭窗口时,它会返回到姓氏字段并突出显示该值。

就好像我需要做一些事情来验证focusOut事件?

2 个答案:

答案 0 :(得分:0)

您可能想尝试使用valueCommit而不是focusOut。您还可以侦听被删除的弹出窗口并手动设置焦点。

HTH;

艾米

答案 1 :(得分:0)

我知道,但Flex可能会引用FocusManager.lastFocus属性来恢复上次组件处于活动状态时的焦点。触发弹出窗口时,请尝试调用:

(focusManager as FocusManager).mx_internal::lastFocus = null;