2009-09-16 9 views

Répondre

7

Pour les clés qui ont des équivalents de caractères imprimables, vous devez utiliser l'événement keypress parce que vous pouvez récupérer les codes de caractères de l'événement keypress, qui est généralement pas possible pour keyup et keydown événements.

Les propriétés d'un événement dont vous avez besoin sont which et keyCode - à peu près tous les navigateurs ont un ou deux d'entre eux, bien que IE brouille les eaux en utilisant keyCode pour le code de caractère tandis que d'autres navigateurs renvoient un code clé (différent). La plupart des navigateurs non-IE ont également charCode mais il semble que tous ces navigateurs ont également which, donc charCode n'est jamais nécessaire. Un exemple simple:

document.onkeypress = function(evt) { 
    evt = evt || window.event; 
    var charCode = evt.which || evt.keyCode; 
    var charStr = String.fromCharCode(charCode); 
    alert(charStr); 
}; 

Voici un useful reference page.

+0

Fondamentalement cela signifie que je dois gérer les caractères imprimables avec onkeypress et le reste (comme la touche de suppression) avec onkeydown? – Christian

+0

Oui. Si c'est juste la touche delete, ça devrait aller - je crois que le keyCode est 46 dans la plupart des navigateurs et des claviers. –

0
document.onkeydown = checkKey; 
function checkKey(e) { 

e = e || window.event; 
document.getElementById("label").style.display = "none"; 
if (e.keyCode == '65') { 
    //a 
    var lx = document.getElementById('location'); 
    typeIt("a"); 
} 
else if (e.keyCode == '66') { 
    //b 
     var lx = document.getElementById('location'); 
    typeIt("b"); 
} 
else if (e.keyCode == '67') { 
    //c 
     var lx = document.getElementById('location'); 
    typeIt("c"); 
} 
} 

Ceci devrait convertir avec succès le code de touche que vous appuyez sur une lettre de chaîne, que vous pouvez utiliser dans une fonction plus grande. Cela prend plus de temps, mais je l'ai trouvé très compatible avec la plupart des navigateurs et claviers (quelle que soit la langue). J'ai utilisé ce code dans un projet d'éditeur de texte qui serait distribué à des amis dans plusieurs pays. travail. Remarque: la fonction ci-dessus ne comprend que les lettres "A", "B" et "C".

+0

Remarque: Ce code fonctionne avec un élément HTML avec l'ID de "location" et fait référence à une fonction appelée typeIt ("LETTER") pour analyser si le texte doit être gras, en italique ou souligné. – IamGuest

Questions connexes