Получение ввода данных пользователем от управления Flex TextInput: какое событие использовать?

На основе XML, предоставленного вами по этой ссылке: XML File

Вот решение:

foreach($xml2->query_result->body->query->doi_record->crossref->journal->journal_article->contributors as $contributors) {
   foreach($contributors as $person) {
       $author = $person->given_name ." " .$person->surname ."; ";
       echo $author;
   }
}

Протестировано и отлично работает. [114 ]

15
задан Niko Nyman 12 November 2008 в 10:17
поделиться

2 ответа

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

Ни один из них не диспетчеризируется, когда текст изменяется с помощью кода:

flash.events.TextEvent.TEXT_INPUT :

"Диспетчеризированный, когда пользователь типы, удаляет или вставляет текст в управление".

(игнорируют слово, "удаляют" там - я просто попробовал его, и это событие не диспетчеризировано, когда текст удален пользователем)

flash.events.Event.CHANGE :

"Диспетчеризированный, когда текст в TextInput управляют изменениями через ввод данных пользователем. Это событие не имеет место при использовании привязки данных или кода ActionScript для изменения текста ".

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

46
ответ дан 1 December 2019 в 00:24
поделиться

Это - большой ответ, hasseg. Если бы у меня было достаточно представителя, то я-проголосовал бы за него.

В зависимости от того, для чего Вы получаете ввод данных пользователем, Вы могли разделить компонент TextInput на подклассы и переопределить внутренних слушателей для изменения и textInput событий.

я не знаю, существует ли много причин, Вы хотели бы сделать это, но я сделал это недавно для контакта с ошибкой в OS X, который заставляет вставляемые разрывы строки быть представленными как '\r', вместо '\n'.

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

this.addEventListener(Event.CHANGE, textFieldChangeListener);   
this.addEventListener(TextEvent.TEXT_INPUT,textFieldInputListener);

И затем добавляют методы прослушивателя и код, который Вы хотите выполнить.

3
ответ дан 1 December 2019 в 00:24
поделиться
Другие вопросы по тегам:

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