Поймайте нажатие клавиши Enter во входном текстовом поле в AS3

Я хочу поймать нажатие клавиши Enter, когда пользователь заполняет входное текстовое поле в AS3. Я думаю, что должен сделать что-то вроде этого:

    inputText.addEventListener(Event. ? , func);
    function func(e:Event):void{
       if(e. ? == "Enter"){
          doSomething();
       }
    }

Но я не могу найти лучший способ сделать это. Между прочим, входной текст имеет ограничение:

inputText.restrict = "0-9";

Я должен добавить клавишу Enter к ограничениям?

inputText.restrict = "0-9\n";

Заранее спасибо.

9
задан Jonathan Barbero 19 February 2010 в 15:22
поделиться

2 ответа

Исправленный ответ

Вы можете легко отслеживать события клавиатуры, возникающие, когда текстовое поле находится в фокусе.

Просто добавьте событие KEY_DOWN прямо в текстовое поле и делайте все, что хотите.

// get key presses only when the textfield is being edited
inputText.addEventListener(KeyboardEvent.KEY_DOWN,handler);
function handler(event:KeyboardEvent){

   // if the key is ENTER
   if(event.charCode == 13){

       // your code here
       doSomething();
   }
}

В отдельном примечании, текстовые поля также отправляют другие полезные события:

  • При изменении пользователем (если это текстовое поле ввода) - Event.CHANGE
  • Когда текст вводится пользователем (если это ввод текстовое поле) - TextEvent.TEXT_INPUT
  • При щелчке по ссылке (если ее HTML-текст) - TextEvent.LINK
  • При прокрутке пользователем (если ее многострочный и содержимое не умещается) - Событие. SCROLL

Предыдущий неправильный ответ:

Я думаю, что единственный способ сделать то, что вы хотите, немного сложен.

По сути, вы не можете получить какое-либо событие из обычного TextField, которое сработало бы при нажатии клавиши Enter. Вам нужно обойтись ...

Одна из идей - прослушивать текстовое поле для событий фокуса. Когда он находится в фокусе, вы добавляете слушателя в сцену для событий клавиатуры и проверяете, нажата ли клавиша Enter, если да, запускайте свое действие, иначе пропустите.

Пример кода:

inputText.addEventListener(FocusEvent.FOCUS_IN,textInputHandler);
inputText.addEventListener(FocusEvent.FOCUS_OUT,textInputHandlerOut);

function textInputHandler(event:FocusEvent):void {
    //our textfield has focus, we want to listen for keyboard events.
    stage.addEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler);
}

function textInputHandlerOut(event:FocusEvent):void {
    //our textfield lost focus, remove our listener.
    stage.removeEventListener( KeyboardEvent.KEY_DOWN, keyDownHandler);
}

function keyDownHandler( e:KeyboardEvent ):void{
    //a key was pressed, check if it was Enter => charCode 13.
    if( e.charCode == 13 ){
      //ok, enter was pressed. Do your thing.
      trace("We pressed enter, doSomething" )
    }
}
33
ответ дан 4 December 2019 в 06:40
поделиться

имя модуля не является типом.

Список в List.map и пусть (a: List < int >) = [1; 2; 3] различаются.

Первый List - имя модуля, второй - тип.

-121--2192902-

Я смог заставить злой глаз уйти, просто добавив этот маленький заголовок к сайту в IFrame (PHP решение):

header('P3P: CP="NOI ADM DEV COM NAV OUR STP"');

Не забудьте нажать ctrl + F5 , чтобы перезагрузить ваш сайт или Explorer все еще может показать злой глаз, несмотря на то, что он работает нормально. Это, вероятно, главная причина, почему у меня было так много проблем, чтобы получить его на работу.

Файл политики вообще не требовался.

Изменить: Я нашел хорошую запись в блоге, которая объясняет проблему с куки в IFrames. Он также имеет быстрое исправление в коде C #: Кадры, страницы ASPX и отклоненные файлы cookie

-121--1811477-

Используется ли текстовое поле или TextInput?

TextInput отправляет событие Enter при нажатии клавиши Enter. Подробнее об этом можно узнать по адресу http://livedocs.adobe.com/flash/9.0/ActionScriptLangRefV3/fl/controls/TextInput.html#event: введите

Я не уверен, как это работает для текстового поля.

0
ответ дан 4 December 2019 в 06:40
поделиться
Другие вопросы по тегам:

Похожие вопросы: