Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Отслеживание Enter в TextInput (http://www.flasher.ru/forum/showthread.php?t=94729)

yana_flash 18.04.2007 17:33

Отслеживание Enter в TextInput
 
Как отслеживать Enter, нажатый при вводе имени/пароля в поле текстового ввода? Во флэше можно было, отслеживая изменения строки, проверять на предмет наличия в ней Enter. Во Флексе я попробовала сделать так же:

Код:

...
<mx:TextInput x="76" y="30" id="txtName" maxChars="16" change="onLoginChange();"/>
<mx:TextInput x="76" y="60" id="txtPassword" displayAsPassword="true" maxChars="16" change="onPasswordChange();"/>
...

private function onLoginChange():void {
        trace("onLoginChange()");
        if (txtName.text.charAt(txtName.text.length-1)=="\n") {
                doLogin();
        }
}

private function onPasswordChange():void {
        trace("onPasswordChange()");
        if (txtPassword.text.charAt(txtPassword.text.length-1)=="\n") {
                doLogin();
        }
}

private function doLogin():void {
...
}

В результате ничего не происходит - даже trace не трейсится... Как организовать перехват нажатия Enter в TextInput?

baron27 18.04.2007 17:42

А зачем его отслеживать? Для валидации или для отправики данных по нажатию?
Если для валидации, то в хелпе полно примеров как вешать слушатели на вводимые данные и на кнопки. Если для отправик данных, то у тега Form есть атрибут defaultButton.

fishbounce 18.04.2007 17:46

во flex2 у TextInput есть событие enter.
Код:

<mx:TextInput enter="textInputEnterHandler(event);" />
Да, и, кстати, по событию enter в txtName лучше делать перевод фокуса в txtPassword (если он еще не заполнен), а не сразу doLogin(). (имхо)

yana_flash 18.04.2007 17:52

> Да, и, кстати, по событию enter в txtName лучше делать перевод фокуса в txtPassword (если он еще не заполнен), а не сразу doLogin(). (имхо)

Согласна.

Код:

<mx:TextInput x="76" y="30" id="txtName" maxChars="16" enter="onLoginChange();"/>
- не сработало.

baron27 18.04.2007 17:58

мне кажется перевод фокуса лучше оставить табу, а по энтеру все таки отправлять данные. если же они не заполнены, то здесь должны работать валидаторы.

fishbounce 18.04.2007 18:13

Цитата:

Сообщение от yana_flash
Код:

<mx:TextInput x="76" y="30" id="txtName" maxChars="16" enter="onLoginChange();"/>
- не сработало.

Ну не знаю, может, у тебя еще что не так.
У меня работает простейший пример:
Код:

<mx:Script>
      <![CDATA[
                import mx.controls.Alert;
       
                private function textInputEnterHandler(event : Event) : void {
                        Alert.show("enter was catched");
                }
                       
        ]]>
</mx:Script>
<mx:TextInput
        id="textInput"
        enter="textInputEnterHandler(event);"
        />


yana_flash 18.04.2007 18:23

Спасибо, заработало :)


Часовой пояс GMT +4, время: 13:20.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.