PDA

Просмотр полной версии : Событие у Input Text


maxttor
30.01.2011, 20:58
Как повесить событие на Input Text - нажатие на Enter ?

bav
30.01.2011, 23:35
События не вешают, их слушают. Вешают слушателей событий, т.е. функции. На TextField можно повесить прослушку события как на всякого наследника EventDispatcher. Посмотрите класс KeyboardEvent (http://help.adobe.com/ru_RU/AS3LCR/Flash_10.0/flash/events/KeyboardEvent.html).

import flash.events.KeyboardEvent;
import flash.ui.Keyboard;

inputField.addEventListener(KeyboardEvent.KEY_DOWN, keyDownHandler);

function keyDownHandler(event:KeyboardEvent):void {
if (event.keyCode == Keyboard.ENTER) {
...
}
}

etc
30.01.2011, 23:35
Повесить на ввод текста, проверить код введенного символа, если соответствует Enter-у — выполнить действие.

maxttor
31.01.2011, 15:22
Извиняюсь, данный вопрос должен быть в разделе "ActionScript 2". Не подскажите как это сделать в AS2?

mooncar
01.02.2011, 09:56
etc, если слушать изменения, а поле Single line, нажатие ENTER как будто не приведет к изменению в поле, событие onChange не произойдет, разве не так?

Такой вариант:
var kl:Object = new Object();

kl.onKeyDown = function ()
{
if (Key.getCode() == Key.ENTER)
{
trace(input_txt.text);

}
};

input_txt.onSetFocus = function ()
{
Key.addListener(kl);
};

input_txt.onKillFocus = function ()
{
Key.removeListener(kl);
};

input_txt - текстовое поле типа "input".

maxttor
01.02.2011, 10:04
Не работает (((

mooncar
01.02.2011, 10:11
Ошиблись наверное где-нибудь, или обстоятельства какие-то дополнительные есть.
См. пример. Набираем текст, после набора жмем ENTER, во втором поле набранный текст появляется.

PS. Тестировать работу с клавиатурой лучше всего вне среды разработки, т.е. вне Flash IDE, а отдельно, поскольку среда разработки может перехватить нажатия на некоторые клавиши, если не принять мер, отключив горячие клавиши.

dark256
01.02.2011, 11:38
var listener:Object = {};
Key.addListener(listener);
listener.onKeyDown = function() { if ( Key.getCode() == 13 ) { юзаем содержимое input_txt }

mooncar
01.02.2011, 12:55
dark, а если юзер с другим полем работает? Или вообще прекратил ввод и что-другое делает?
Поэтому я в примере onSetFocus ввел.

dark256
01.02.2011, 13:16
Согласен, но так как он написал "ВСЕ РАВНО не работает", я еще более упростил ваш же конструктив :)
Вы никогда не сталкивались с ситуацией, что одно и тоже приходится объяснять по разному, и до человека доходит только на 3-м или 4-м примере :) В зависимости от перестановки слов в приложении и примеров :)

По-любому, у меня задача решена в общем случае, когда это заработает, можно уже вдаваться в частности,
с фокусом в том числе.

mooncar
01.02.2011, 13:21
Сталкивался конечно. Потому готовый пример и вложил в посте №7, чтобы не вдаваться в объяснения, как слушать разные поля, что делать, если пользователь увел курсор из поля. Так и мне проще объяснить, и автору разобраться.
btw, dark, на "ты" уж вроде давно? :)

maxttor
01.02.2011, 17:37
mooncar, огромное спасибо за помощь!

dark256
01.02.2011, 18:17
btw, dark, на "ты" уж вроде давно?

да у меня тут уже ум за разум, с кем на ты а с кем на вы :)))))))
посл.время что-то ооооочень много новых контактов появилось со всех сторон :((((
Исправлюсь :)