2013-07-27 1 views
2

Ceci est la suite de mon autre question. Je vérifie si un caractère valide ou un numéro est presséComment capturer NativeEvent.getKeyCode de "shift + anykey"

Caractères valides - A à Z et az, ces caractères peuvent être entrés avec "SHIFT + A = a" et vice-versa "SHIFT + a = A ". Je limite la saisie de caractères autres que valides par l'utilisateur

Caractères non valides - "SHIFT + 1 =!" à "SHIFT + 0 =)"

Heres un extrait de code, que j'ai essayé, mais ne savez pas comment obtenir le code de touche "SHIFT + ...."

@Override 
    public void onBrowserEvent(Context context, Element parent, String value, 
       NativeEvent event, ValueUpdater<String> vUpdater){ 

    if (event.getShiftKey()) { 
       int code = event.getKeyCode(); 
    //only a-z and A-Z are allowed if shift key is pressed 
    if ((code >= 65 && code <= 90) || (code >= 97 && code <= 122)) { 
     validShiftKeyPressed = true; 
    } else { 
     validShiftKeyPressed = false; 
    }  
    } 

    if (validShiftKeyPressed && 
       (event.getKeyCode()>=48 && event.getKeyCode()<=57)){ 
     \\do some operation 
     } 

code int = event.getKeyCode()

La valeur du code sera toujours 16 et validShiftKeyPressed sera toujours faux.

Je veux vérifier la valeur de SHIFT + A ou SHIFT + 1 ou toute autre combinaison est pressée. Est-ce que c'est possible?

Répondre

1

Ce n'est pas exactement une réponse à votre question exacte mais je ne suis pas sûr que le chemin que vous empruntez va vous donner ce que vous voulez. Si j'ai tort, ignorez simplement cette réponse.

J'utilise une variante du code ci-dessous pour empêcher les entrées utilisateur non numériques tout en permettant à l'utilisateur de se déplacer et d'éditer le champ. J'ai ajouté le "Character.isLetter (c)" à cet extrait pour autoriser également les lettres (supérieures ou inférieures). La classe d'émulation GWT indique qu'elle ne gère que les caractères ASCII. Vous pouvez trouver la classe émulée dans "/ gwt-user/com/google/gwt/emul/java/lang/Character" dans le fichier gwt-user.jar pour voir ce qu'il fait dans javascript-land. Sachez que ce type de code n'inclut pas une solution complète de contrainte et de validation pour vos utilisateurs. Par exemple, cela n'empêche pas l'utilisateur de coller ce qu'il veut dans le champ. J'essaie généralement de faire une validation complète de la page avant de sauvegarder pour m'assurer que l'entrée finale de mes champs est valide. J'utilise la fonctionnalité de validation GWT (validation du bean) pour ce faire. Cela intercepte toutes les pannes d'entrée que je n'ai pas pu empêcher à partir d'un code comme celui-ci.

protected void handleKeyPress(KeyPressEvent event) { 

    // get the char code 
    char charCode = event.getCharCode(); 
    if (charCode == '\u0000') { 
     /* 
     * On some browsers the charcode does not exist in the keypress 
     * event. In this case we switch over to the keycode. 
     */ 
     charCode = (char)event.getNativeEvent().getKeyCode(); 
    } 

    // prevent input other than [a-z|A-Z|0-9] but still allow basic navigation and editing keys 
    if ((!Character.isDigit(charCode)) && (!Character.isLetter(charCode)) && 
      (charCode != (char)KeyCodes.KEY_TAB) && 
      (charCode != (char)KeyCodes.KEY_BACKSPACE) && 
      (charCode != (char)KeyCodes.KEY_ENTER) && 
      (charCode != (char)KeyCodes.KEY_HOME) && 
      (charCode != (char)KeyCodes.KEY_END) && 
      (charCode != (char)KeyCodes.KEY_LEFT) && 
      (charCode != (char)KeyCodes.KEY_UP) && 
      (charCode != (char)KeyCodes.KEY_RIGHT) && 
      (charCode != (char)KeyCodes.KEY_DOWN)) { 
     event.preventDefault(); 
    } 
}