2012-10-02 3 views
4

Je ne trouve pas comment obtenir la valeur d'une touche enfoncée. J'ai actuellementRécupère la valeur d'une touche enfoncée

$('#info_price').bind('keydown',function(evt){ 
    alert(evt.keyCode); 

mais retour « 49 » quand je presse sur 1 au lieu de retourner « 1 ».

Editer: Je suis conscient que le code Ascii de la clé «1».

L'objectif final est de permettre aux utilisateurs d'écrire uniquement des chiffres dans l'entrée. Donc je veux détecter le non chiffre et ne pas les afficher.

+5

49 est le [code Ascii] (http://www.asciitable.com/) de touche 1 – Andreas

+1

@Andreas C'est juste une coïncidence. – Neil

Répondre

11

Comme il est dit dans le commentaire, il est le code ASCII. Pour l'obtenir comme personnage que vous pouvez faire:

alert(String.fromCharCode(evt.keyCode)); 
+3

Notez que les codes clés ne sont pas la même chose que les codes de caractères. Pour les touches simples, leurs codes correspondent à leurs équivalents de caractères, mais par exemple. touches de lettre il se traduit par des lettres majuscules. Vous auriez besoin de [l'événement 'keypress'] (http://jsfiddle.net/3wThj/) pour obtenir les codes de caractères. – pimvdb

+0

Donc pour un clavier azerty j'ai besoin d'appuyer sur Maj + 1 pour en afficher un. Comme je suis en train de presser le changement d'abord, cette solution ne fonctionne pas aussi bien. – bl0b

+0

@ bl0b: 'keypress' peut fonctionner, voir le lien dans mon commentaire ci-dessus. – pimvdb

2

Voici un code entièrement fait pour vous de travailler avec (pas le mien, mais je l'ai utilisé):

http://www.selfcontained.us/2009/09/16/getting-keycode-values-in-javascript/

keycode = { 

    getKeyCode : function(e) { 
     var keycode = null; 
     if(window.event) { 
      keycode = window.event.keyCode; 
     }else if(e) { 
      keycode = e.which; 
     } 
     return keycode; 
    }, 

    getKeyCodeValue : function(keyCode, shiftKey) { 
     shiftKey = shiftKey || false; 
     var value = null; 
     if(shiftKey === true) { 
      value = this.modifiedByShift[keyCode]; 
     }else { 
      value = this.keyCodeMap[keyCode]; 
     } 
     return value; 
    }, 

    getValueByEvent : function(e) { 
     return this.getKeyCodeValue(this.getKeyCode(e), e.shiftKey); 
    }, 

    keyCodeMap : { 
     8:"backspace", 9:"tab", 13:"return", 16:"shift", 17:"ctrl", 18:"alt", 19:"pausebreak", 20:"capslock", 27:"escape", 32:" ", 33:"pageup", 
     34:"pagedown", 35:"end", 36:"home", 37:"left", 38:"up", 39:"right", 40:"down", 43:"+", 44:"printscreen", 45:"insert", 46:"delete", 
     48:"0", 49:"1", 50:"2", 51:"3", 52:"4", 53:"5", 54:"6", 55:"7", 56:"8", 57:"9", 59:";", 
     61:"=", 65:"a", 66:"b", 67:"c", 68:"d", 69:"e", 70:"f", 71:"g", 72:"h", 73:"i", 74:"j", 75:"k", 76:"l", 
     77:"m", 78:"n", 79:"o", 80:"p", 81:"q", 82:"r", 83:"s", 84:"t", 85:"u", 86:"v", 87:"w", 88:"x", 89:"y", 90:"z", 
     96:"0", 97:"1", 98:"2", 99:"3", 100:"4", 101:"5", 102:"6", 103:"7", 104:"8", 105:"9", 
     106: "*", 107:"+", 109:"-", 110:".", 111: "/", 
     112:"f1", 113:"f2", 114:"f3", 115:"f4", 116:"f5", 117:"f6", 118:"f7", 119:"f8", 120:"f9", 121:"f10", 122:"f11", 123:"f12", 
     144:"numlock", 145:"scrolllock", 186:";", 187:"=", 188:",", 189:"-", 190:".", 191:"/", 192:"`", 219:"[", 220:"\\", 221:"]", 222:"'" 
    }, 

    modifiedByShift : { 
     192:"~", 48:")", 49:"!", 50:"@", 51:"#", 52:"$", 53:"%", 54:"^", 55:"&", 56:"*", 57:"(", 109:"_", 61:"+", 
     219:"{", 221:"}", 220:"|", 59:":", 222:"\"", 188:"<", 189:">", 191:"?", 
     96:"insert", 97:"end", 98:"down", 99:"pagedown", 100:"left", 102:"right", 103:"home", 104:"up", 105:"pageup" 
    } 

}; 
0

Le code clé ne correspond pas directement à la valeur de caractère. Au lieu de cela, vous devez regarder l'événement keypress, qui vous fournit une propriété charCode. Vous pouvez ensuite utiliser String.fromCharCode pour transformer cela en une chaîne.

0

Pour obtenir le caractère du ASCII:

String.fromCharCode(); 

pour activer ASCII dans une chaîne.

5

Pour ceux qui google maintenant, comme je suis

$('input').on('keydown', function(e) { 
    console.log(e.key); 
});​ 
+0

Si simple - meilleur encore. – BradM

Questions connexes