2013-01-11 2 views
4

Possible en double:
JavaScript event.keyCode constantsJavaScript: Éviter keycodes hardcoded

Voici mon code:

$button.on('keyup', function (event) { 
    // Detect an Enter keypress 
    if(event.keyCode === 13) { 
     doStuff(); 
    } 
}); 

Comme vous pouvez le voir, le code d'activation 13 est hardcoded. Existe-t-il un moyen (inter-navigateur) d'extraire ce nombre d'une manière plus sémantiquement significative?

+3

S'il y a quelque chose de plus sémantique et propre que les codes décimaux ASCII, je ne l'ai jamais vu. Bien sûr, vous pouvez créer une carte 'var keys = {enter: 13}' et la passer dans 'event.code === keys.enter', mais je préfère personnellement voir les keycodes pour être sûr de ce que le script est faire sans regarder la définition d'un objet. Et non, il n'y a pas de problèmes de cross-browser/platform avec la touche Enter autant que je sache. –

+0

Il suffit de définir un objet avec des codes clés, des valeurs, et des noms de touches comme des clés. Il n'y a pas construit enum pour cela. – mpm

+4

'" \ r ".charCodeAt (0)' ou http://stackoverflow.com/questions/1465374/javascript-event-keycode-constants –

Répondre

1

Pour répéter la réponse de Alex K. (J'ai utilisé):

"\r".charCodeAt(0) 
10

Si vous travaillez avec jQueryUI, vous pouvez utiliser $.ui.keyCode constantes:

keyCode: { 
    BACKSPACE: 8, 
    COMMA: 188, 
    DELETE: 46, 
    DOWN: 40, 
    END: 35, 
    ENTER: 13, 
    ESCAPE: 27, 
    HOME: 36, 
    LEFT: 37, 
    NUMPAD_ADD: 107, 
    NUMPAD_DECIMAL: 110, 
    NUMPAD_DIVIDE: 111, 
    NUMPAD_ENTER: 108, 
    NUMPAD_MULTIPLY: 106, 
    NUMPAD_SUBTRACT: 109, 
    PAGE_DOWN: 34, 
    PAGE_UP: 33, 
    PERIOD: 190, 
    RIGHT: 39, 
    SPACE: 32, 
    TAB: 9, 
    UP: 38 
} 

Ainsi, afin de vérifier Entrez appuyé, utilisez:

if (event.keyCode === $.ui.keyCode.ENTER) { ... } 
+0

Ceux-ci ne sont bien sûr pas les seuls keyCodes qui sont constamment cross-navigateur droite? @Vision –

+1

Les sables mouvants du temps ont brisé ce lien; [en voici un qui fonctionne] (https://github.com/jquery/jquery-ui/blob/e9643f6bfc922773e29e3084e64de0240b547f32/ui/core.js#L29-L46) (à partir d'octobre 2014) –

Questions connexes