J'ai des difficultés à capturer la touche de retour arrière en tant qu'événement clavier en javascript/jQuery. Dans Firefox, Safari, Opera, Chrome, et sur l'iPhone/iPad, je capture un événement keyup sur une zone de saisie de texte comme celui-ci:Capture d'un événement clé pour le retour arrière
$(id_input).keyup(function(event) {
that.GetHints($(this).val().trim(), event, fieldName);
});
Cet événement capture les frappes de l'utilisateur, puis les envoie à une fonction d'émettre un appel de recherche ajax.
Mon problème survient lorsqu'un utilisateur souhaite revenir en arrière sur un caractère qu'il a déjà tapé. Dans tous les navigateurs auxquels j'accède à l'exception de mon téléphone Droid, lorsque j'appuie sur la touche de retour arrière, cet événement keyup capture la valeur renvoyée par $ (this) .val(). Trim() et l'envoie à la fonction GetHints. Sur le Droid, cependant, ni ce keyup ni un événement de keydown équivalent ne se déclenche tant que l'utilisateur ne fait pas de retour arrière sur chaque caractère dans $ (this). Donc, par exemple, si je tape "cu" alors retour arrière sur le "u" en laissant seulement "c" dans le champ de saisie, dans tous les navigateurs sauf Droid, l'événement de touche se déclenchera et appellera la fonction GetHints("c", event, fieldName)
. Sur le Droid, l'événement keyup ne se déclenche jamais.
Qu'est-ce qui me manque? Comment/pourquoi cette touche d'effacement arrière, sur le clavier logiciel ou le clavier dur, sur mon Droid ne fonctionne-t-elle pas comme prévu? Comment est-ce que je travaille autour de ceci?
Juste un coup dans le noir, parce que cela ressemble à un problème d'androïde: avez-vous essayé les événements de clavier ou de pression? Peut-être que vous aurez plus de chance avec ceux-là. – Jon
Oui, je voudrais essayer la touche au lieu du clavier – jnoreiga