2010-10-26 4 views
2

J'ai un widget de texte dans lequel je veux que l'événement enter se comporte comme un événement tab. donc je capture l'événement de presse Key et soulève un événement natif de l'onglet.L'événement natif de GWT n'offre pas le comportement voulu

Toutefois, le comportement de l'onglet n'est pas reflété dans l'application. Le code de gestionnaire d'événements est

public void onKeyPress(KeyPressEvent event) { 
      int keyCode = event.getNativeEvent().getKeyCode(); 
      if (keyCode == KeyCodes.KEY_ENTER) { 
       NativeEvent nativeEvent = 
       Document.get(). 
       createKeyPressEvent(false,false,false,false,KeyCodes.KEY_TAB); 
       DomEvent.fireNativeEvent(nativeEvent, this, this.getElement()); 
      } 

Lorsque j'utilise le createKeyPressEvent dépréciée avec argument de plus, il déclenche l'événement onglet mais le comportement est pas par l'onglet appuyez sur la touche, ce qui est de passer à widget suivant. Les nouveaux changements de code du code ci-dessus dans la ligne d'événement createKeyPress comme suit

 NativeEvent nativeEvent = 
     Document.get(). 
     createKeyPressEvent(false,false,false,false, 
         KeyCodes.KEY_TAB ,KeyCodes.KEY_TAB); 

Répondre

1

Notez que le tir manuellement un événement ne génère pas l'action par défaut associée à cet événement. Pour exemple, tirer manuellement un événement de mise au point ne provoque pas l'élément pour recevoir focus (vous devez utiliser la méthode de mise au point pour cela), tirer manuellement soumettre un événement ne présente pas un formulaire (utilisez la méthode soumettre ), tir manuellement un événement clé ne provoque pas cette lettre à apparaissent dans une entrée de texte ciblé et tir manuellement un événement click sur un lien ne provoque pas le lien pour être activé, etc. dans le cas des événements UI , cela est important pour la sécurité raisons, car il empêche les scripts de de simuler des actions de l'utilisateur qui interagissent avec le navigateur lui-même.

De http://www.howtocreate.co.uk/tutorials/javascript/domevents.

+0

Vous avez raison. Maintenant, j'ai changé la façon dont je gère. Je contrôle le focus à l'aide du code, après avoir appuyé sur la touche entrée, ce qui est similaire à ce que ferait un événement d'onglet. La mise en œuvre est également à un niveau supérieur. – lalit

Questions connexes