【发布时间】:2009-07-23 08:42:51
【问题描述】:
我是 Flex 新手,我正在测试一个模拟购物车的小应用程序。 (它基于 Farata Systems 的 Yakov Fain 的一个很好的样本)。 注意:我正在使用 Flash Builder 4 测试版来编写应用程序。
这里有一个截图链接: Screenshot
(抱歉,由于stackoverflow不允许新用户使用图像标签,因此我无法在此处插入屏幕截图的图像。)
应用程序非常简单。您在 TextInput 控件中键入产品,然后单击“添加到购物车”按钮将其添加到由底部的 TextArea 表示的“购物车”。
没问题。
问题是我还希望用户能够继续将商品添加到购物车,而无需单击“添加到购物车”按钮。因此,我添加了代码来处理 TextInput 的 enter 事件,方法是调用由“添加到购物车”Click 事件触发的相同处理函数。
如果您键入一些内容,然后单击“添加到购物车”按钮,TextInput 控件将接收焦点和光标,因此您可以再次键入。 但是,如果您按 Enter 键,而不是单击按钮,TextInput 控件将保持焦点,并且您可以看到光标光束,但是您无法输入文本,直到您单击其他位置并返回控件。
您可以在下面看到代码的相关部分,其中定义了将顶部的三个控件(Label、TextInput、Button)分组的组件的定义。
¿有什么建议吗?
<?xml version="1.0" encoding="utf-8"?>
<fx:Script>
<![CDATA[
protected function newItemHandler():void
{
import cart.ItemAddedEvent;
var e : ItemAddedEvent = new ItemAddedEvent( "->" + textInputItemDescription.text );
textInputItemDescription.text = "";
textInputItemDescription.setFocus();
textInputItemDescription.setSelection(0,0);
dispatchEvent( e ); // Bubble to parent = true
trace( "I just dispatched AddItemEvent " + e.toString() + "\n Content = " + e.itemDescription );
}
]]>
</fx:Script>
<fx:Metadata>
[Event(name="ItemAddedEvent",type="cart.ItemAddedEvent",bubbles=true)]
</fx:Metadata>
<mx:Label text="Item description:"/>
<s:TextInput id="textInputItemDescription" enter="newItemHandler() "/>
<s:Button click="newItemHandler()" label="Add to cart"/>
【问题讨论】:
标签: apache-flex actionscript-3 setfocus