我有一个包含多个字段的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事件?
答案 0 :(得分:0)
您可能想尝试使用valueCommit而不是focusOut。您还可以侦听被删除的弹出窗口并手动设置焦点。
HTH;
艾米
答案 1 :(得分:0)
我知道,但Flex可能会引用FocusManager.lastFocus属性来恢复上次组件处于活动状态时的焦点。触发弹出窗口时,请尝试调用:
(focusManager as FocusManager).mx_internal::lastFocus = null;