7
votes

Détecter le caractère entré avec JavaScript

Je voudrais démarrer une action (activation automatique) lorsque les types d'utilisateurs '@'. J'ai JQuery disponible.

généralement sur un clavier QWERTY, c'est comme ceci: xxx

Cependant, il ne fonctionne pas correctement sur un clavier Azerty. Le code clé = 50 correspond à la à © ~ / 2 clé. Pour taper '@' dans le clavier Azerty, il est altgr + à @ / 0 Touche.

EDIT: Sélection automatique démarre quand @ est entré, et seulement après cela. Exemple, quand quelqu'un entre "Hello @", alors il commence, cependant, quand il tape "Bonjour @Nothing d'autre" La complète ne fera rien. Exemple: http://mrkipling.github.com/jquery-at-username/ (Ça ne fonctionne que sur le clavier QWERTY).


1 commentaires

D'Oh, je n'ai pas remarqué ce que Stackoverlow a exactement ce dont j'ai besoin avec la fonctionnalité de nom d'utilisateur autocomplete dans le commentaire.


5 Réponses :


0
votes

La seule autre option qui vous vient à l'esprit serait une minuterie qui vérifie le contenu de l'entrée de texte.

var patt=new RegExp(/^@/);
var charCheck = setInterval(function(){
  if (patt.test($("#textInput").val())){
    // initiate autocomplete
  }
},100);


2 commentaires

Il devrait vérifier @ n'importe où dans le Textarea, et l'autocomplete ne commence que lorsque le curseur est juste après le caractère "@". Je pense qu'il est toujours possible de vérifier toutes ces conditions, mais y a-t-il une solution plus simple?


@JCI - Vous devriez mentionner la spécification sur la position du curseur dans votre message principal. De plus, si vous souhaitez rechercher ce symbole n'importe où dans la chaîne, supprimez simplement le symbole ^ .



2
votes

Que diriez-vous de vérifier si @ a été entré comme le dernier caractère de la valeur du champ? xxx

Démo: http://jsfiddle.net/fkhpw/2/


2 commentaires

Merci, cela fait fondamentalement ce que j'aimerais faire. Il y a quelques cas, par exemple, lorsque l'utilisateur termine un message, passe ensuite au début et ajoute '@Asername' Ça ne fonctionnera pas. Je vais essayer de l'adapter.


@JCisio Oui, il pourrait peut-être avoir besoin d'une certaine correction. Au moins, je ne vois aucune autre solution rapide et de travail.




3
votes

Utiliser keypress au lieu de clé . Tandis que keydown concerne chaque appui d'une touche, keypress concerne les caractères traduits, donc par exemple A peut être différent de A pendant que la touche est enfoncée, le travail de caractères composé, le travail des touches morts et d'autres différences dans les mappages de clavier sont manipulés.



1
votes

Utilisez Event.Key et JS moderne, vérifiant pour @ directement!

pas de code Numéro plus. Vous pouvez vérifier directement la clé. xxx

Mozilla Docs

Navigateurs pris en charge < / a>


0 commentaires