Pergunta

Devo usar o change ou evento textInput à entrada do usuário captura em um controle TextInput? Por quê?

Foi útil?

Solução

textInput só é despachado quando o usuário tem de entrada texto no controle. change , por outro lado, é enviado a cada mudança cometida pelo usuário. Assim, por exemplo, se o usuário exclui uma parte do texto, somente o evento change é despachado.

Nenhum destes é despachado quando o texto é modificado por meio de código:

flash.events.TextEvent.TEXT_INPUT :

"Despachado quando o o usuário tipos, exclui ou cola texto no controlar ".

(ignorar a palavra "eliminar" lá - eu apenas tentei e este evento é não despachado quando texto é excluído pelo usuário)

flash.events.Event.CHANGE :

"Despachado quando o texto nas mudanças de controle TextInput por meio de usuário entrada. Este evento não ocorre se você usa a ligação de dados ou ActionScript código para alterar o texto ".

Você também pode usar o valueCommit evento, que é despachado quando os "commits" usuário as mudanças (geralmente movendo o foco longe do campo de texto), mas lembre-se que este evento também é despachado quando o valor do campo é alterado de forma programática.

Outras dicas

Isso é uma grande resposta, hasseg. Se eu tivesse rep suficiente, eu up-voto-lo.

Dependendo do que você está capturando a entrada do usuário para, você poderia subclasse o componente TextInput e substituir os ouvintes internos para a mudança e eventos textInput.

Eu não sei se há uma série de razões que você gostaria de fazer isso, mas eu fiz isso recentemente para lidar com um bug no OS X que causa quebras de linha colado a ser representado como '\ r', em vez de '\ n'.

Tudo que você precisa fazer é adicionar a chamada seguinte após a sua super () no construtor do seu objeto de subclasse:

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

E, em seguida, adicionar os métodos do ouvinte e o código que você deseja executar.

Ambos Event.CHANGE e TextEvent.TEXT_INPUT eventos gatilho em cada caractere digitado. Se você quer um evento que só irá desencadear uma única vez para um determinado campo TextInput, uso FocusEvent.FOCUS_OUT .

Como Event.CHANGE e TextEvent.TEXT_INPUT, este evento só vai gatilho para a entrada do usuário, e não para mudanças programáticas para o valor.

CHANGE não lhe diz o mudou completamente -. TEXT_INPUT e KEY_DOWN fazer

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top