Я новичок в Flex и тестирую небольшое приложение, имитирующее тележку. (Он основан на прекрасном образце Якова Файна из Farata Systems). Примечание. Я использую бета-версию Flash Builder 4 для написания кода приложения.
Здесь у вас есть ссылка на снимок экрана: Снимок экрана
(Извините, я не могу вставить изображение скриншота прямо здесь, поскольку stackoverflow не позволяет новым пользователям использовать теги изображений.)
Приложение очень простое. Вы вводите продукт в элемент управления TextInput, а затем нажимаете кнопку «Добавить в корзину», чтобы добавить его в «корзину», которая представлена TextArea внизу.
Это нормально работает.
Проблема в том, что я также хочу, чтобы пользователь мог продолжать добавлять товары в корзину, не нажимая кнопку «Добавить в корзину». Итак, я добавил код для обработки события ввода TextInput путем вызова той же функции-обработчика, которая запускается событием Click «Добавить в корзину».
Если вы введете какой-либо контент, а затем нажмете кнопку «Добавить в корзину», элемент управления TextInput получит фокус и курсор, так что вы можете ввести снова. Однако, если вы нажмете клавишу ввода, вместо нажатия кнопки элемент управления 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"/>