2010-12-06 22 views
6

Je veux obtenir le texte tapé au clavier, pas le code clé. Par exemple, je appuie sur Maj + f, je reçois le "F", au lieu d'écouter deux codes clés. Un autre exemple, je clique sur F3, je n'ai rien entré. Comment puis-je savoir ça en js? Je vous remercie.Comment écouter le texte de type clavier en Javascript?

+0

Êtes-vous dactylographie dans un zone de texte? –

+0

no. L'utilisateur ne tapera pas sur une zone de texte. – Tattat

+0

** Remarque: ** L'OP s'intéresse à un mécanisme qui fonctionnerait avec les éditeurs de méthode d'entrée (IME) (par exemple chinois). Peut-être devrait être une exigence mentionnée dans la question elle-même. –

Répondre

0

J'utilise jQuery pour faire quelque chose comme ceci:

$('#searchbox input').on('keypress', function(e) { 

    var code = (e.keyCode ? e.keyCode : e.which); 
    if(code == 13) { 
      //Enter keycode 
    //Do something 
    } 

}); 

EDIT: Puisque vous n'êtes pas se lier à l'utilisation zone de texte:

$(window).on('keypress', function(e) { 

    var code = (e.keyCode ? e.keyCode : e.which); 
    if(code == 13) { 
      //Enter keycode 
    //Do something 
    } 

}); 

http://docs.jquery.com/Main_Page

+0

Mais l'utilisateur ne tape pas sur une zone de texte. – Tattat

+0

vérifier édition pour la solution – capdragon

0

Vous pouvez écouter la onkeypress événement. Toutefois, au lieu de simplement examiner la propriété event.keyCode (IE) ou event.which (Mozilla) qui vous donne le code de clé, vous devez traduire le code de clé en utilisant String.fromCharCode(). Une bonne démo est à Javascript Char Codes (Key Codes). Vérifiez la source et recherchez la fonction displayKeyCode(evt). Références supplémentaires: w3schools - onkeypress Event et w3schools - JavaScript fromCharCode() method.

+0

mais il ne sait pas quand l'utilisateur utilise une autre méthode de frappe, par exemple, chinois. – Tattat

+0

Donc ... pour être clair: vous n'allez pas utiliser une zone de texte (ou une zone de texte), mais vous voulez être capable de traiter le caractère résultant que l'utilisateur a tapé sur votre page web, et cela peut être un caractère résultant d'un ** éditeur de méthode d'entrée (IME) ** .. difficile. –

+0

@Tim Merci pour la suggestion; Je vais faire l'édition. –

0

Ceci est trop compliqué pour répondre rapidement. C'est ce que j'utilise comme référence définitive pour la gestion du clavier. http://unixpapa.com/js/key.html

+0

Belle ressource - Je bookmarking it. Dans ce contexte particulier, cependant, une certaine mention de la façon dont les choses fonctionnent (ou ne fonctionnent pas) avec les éditeurs de méthode d'entrée (IME) serait utile. –

+0

J'espère que je n'ai pas fait sonner comme si j'avais écrit cet article. –

+0

Eh bien, l'article porte le nom de l'auteur (Jan Wolter), donc il est clair que dans cette perspective ce n'est pas votre article, mais dans votre réponse, il est dit * "Ceci est ** ma ** référence définitive ... "* .. qui peut être interprété de cette façon ;-) –

19

Pour ce faire, utilisez l'événement keypress comme suit. Aucun autre événement clé pris en charge aujourd'hui largement fera:

document.onkeypress = function(e) { 
    e = e || window.event; 
    var charCode = (typeof e.which == "number") ? e.which : e.keyCode; 
    if (charCode) { 
     alert("Character typed: " + String.fromCharCode(charCode)); 
    } 
}; 

Pour toutes les questions relatives à la clé JavaScript, je recommande l'excellent article de Jan Wolter: http://unixpapa.com/js/key.html

+0

Cela fonctionnera-t-il lorsque l'utilisateur utilisera un éditeur de méthode d'entrée (IME)? –

+0

@Chris: Je n'en ai aucune idée. Comment l'IME que vous avez en tête interagit-il avec un contrôle de formulaire sur une page Web? –

+0

Je ne fais que mentionner une autre exigence que le PO a laissé tomber dans un commentaire (voir ma réponse). –