jQuery: l'Écoute pour scanner automatisé de saisie au clavier?
Je suis en train d'écrire une application web pour un système de bibliothèque avec un scanner de code à barres ci-joint. Le scanner d'entrée se présente comme la saisie au clavier, et c'est toujours de la forme ~~[\d]+.[\d]+~~
, par exemple ~~470.002~~
.
Je veux mettre en place un jQuery écouteur pour scanner d'entrée, et je suis un jQuery novice. Il convient d'écouter toutes les entrées au clavier, mais seulement d'exécuter une action lorsqu'il entend les commentaires de la scanner, et seulement lorsque le scanner d'entrée est terminé.
Voilà ce que j'ai (c'est à dire pas très):
//Global functions: call on all pages.
$(document).ready(function() {
//Listen for scanner input.
$(window).keypress(function(e) {
var key = e.which;
if (key==126) {.
alert('tilde');
//How to listen for the correct input?
//check_out_book();
}
});
});
Quelle est la meilleure façon de rester à l'écoute d'entrée dans le format que j'ai besoin? J'aimerais qu'il écoute pour la finale deux tildes avant d'appeler check_out_book()
.
Je tiens également à "stop" à l'écoute après le premier tilde si il y a une pause pour distinguer entre un homme dactylo et le système automatisé de scanner d'entrée. N'jQuery ont une façon de le faire?
Tous les pointeurs de très apprécié! Je vous remercie.
OriginalL'auteur AP257 | 2011-01-06
Vous devez vous connecter pour publier un commentaire.
Je pense que vous voulez pour ce faire, stockez ce que vous avez reçu à ce jour et vérifier pour voir si elle est valide. Si elle n'est pas, jetez ce que vous avez reçu et recommencer:
Vous pouvez combiner toutes ces expressions régulières en deux, mais je pense que c'est plus lisible de cette façon.
OriginalL'auteur lonesomeday
Je viens de finir d'écrire un peu de code javascript qui détecte si un scanner de code à barres est utilisé pour remplir un champ de saisie et déplace le curseur d'un champ à l'autre si elle l'était.
Mon code répond en partie à votre question, "je veux mettre en place un jQuery écouteur pour scanner d'entrée, et je suis un jQuery novice. Il convient d'écouter toutes les entrées au clavier, mais seulement d'exécuter une action lorsqu'il entend les commentaires de la scanner, et seulement lorsque le scanner d'entrée est terminé."
Voici le code HTML pour les champs de saisie:
J'ai deux champs de la classe de bcode " qui sont destinés pour scanner de code à barres d'entrée (f1 & f2). Le troisième champ est prévu pour une entrée régulière (f3). Les champs de f1 & f2 envoyer (1) le timestamp actuel lorsque vous appuyez sur une touche de la fonction "typeSpeed" et (2) l'id du champ suivant pour sélectionner lorsque le champ obtient le focus. Ces champs aussi déclencher un appel à la fonction 'typeSpeedReset" lorsque le champ perd le focus.
Ici, c'est le javascript/jQuery qui le fait fonctionner:
Ce qui se passe est le temps entre les touches est quantifiée par la fonction "typeSpeed'. J'ai découvert par le biais de l'expérimentation (écrasant sur le clavier ou maintenir une touche enfoncée) que l'homme le plus rapide d'entrée a environ ~33ms de délai entre deux frappes au clavier. Le scanner de code-barres que j'ai utilisé pour le test produit généralement des retards de 10 ms ou moins.
Un délai d'attente est défini sur le terrain avec la classe de bcode' pour détecter lorsque l'entrée a arrêté momentanément. À ce stade, le retard est évaluée. Si c'est moins de 20ms, un scanner de code à barres est supposé avoir été utilisé et le champ suivant est donné de se concentrer.
Le projet de ce code a été écrit pour va une étape plus loin en changeant la couleur de fond du champ et de l'affichage d'un petit code à barres graphique à droite du champ lorsqu'il est activé de sorte que les utilisateurs ont une indication claire qu'il est sensible à et conçu pour scanner de code à barres d'entrée.
OriginalL'auteur humbolight
Veuillez vérifier ce lien, il permet de détecter le lecteur de code-barres, vous n'avez pas à être porté à une certaine entrée.
OriginalL'auteur Ahmed Sobhy