【发布时间】:2011-07-21 17:07:34
【问题描述】:
我有一个包含多个字段和一个带有 focusOut 事件的文本字段的 flex 应用程序:
<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 光标从姓氏字段按制表顺序(地址)移动到下一个字段,然后我的窗口弹出。当我关闭窗口时,它会返回到姓氏字段并突出显示该值。
好像我需要做一些事情来验证 focusOut 事件?
【问题讨论】:
-
我很好奇,为什么您会在关注文本输入之后弹出一个弹出窗口?这是一种非常奇怪的非标准用户体验行为。
-
Person 输入名字和姓氏,添加新客户,按下选项卡(或点击退出),应用程序正在执行重复检查并弹出可能重复的列表。说它很奇怪,但这就是我在大多数具有客户/客户重复名称检查功能的业务应用程序中一直看到的方式。与其让用户首先手动搜索,它可能会节省一些点击/步骤,特别是如果它是一个不常见的姓氏。
-
而不是弹出窗口,你不是宁愿有一个下拉列表吗?像搜索完成框? (想想谷歌,而是给你可能的名字)。如果是这种情况,您不需要弹出窗口,也不需要检查“onFocusOut”。你应该在“改变”时这样做。
-
我采用了下拉列表的概念,效果很好。
标签: apache-flex events focus flash-builder