J'essaie de créer un formulaire qui fonctionne de manière similaire à la page de recherche Google, ainsi que Gmail et plusieurs autres pages (y compris cette page - voir l'entrée «Tags» sur la page Poser une question). Lorsque le texte est entré, une liste d'options apparaît et l'utilisateur peut utiliser les flèches haut et bas pour sélectionner l'option désirée. Le problème que j'ai est que la flèche vers le haut met le curseur/caret en position 0 du champ, et vers le bas le met à la fin. Y a-t-il un moyen facile de l'empêcher de se déplacer vers le début/la fin, ou ai-je besoin de trouver la position du curseur avant que ma fonction soit exécutée, et de la repositionner à cet endroit après?Comment empêcher mon curseur/curseur de se déplacer à l'intérieur d'un élément de texte en entrée?
Ceci est le début de la fonction qui s'exécute lorsque le texte est entré dans l'élément d'entrée (onkeyup). Faites-moi savoir si plus de code serait utile.
var keycode = checkKeycode (event); // returns the keycode of the key pressed.
if (keycode == 38) { // up arrow
var selection = $(".optionsSelected").attr("id");
var selId = parseInt(selection.replace('briefOption', ''));
if (selId != 0) {
$(".optionsSelected").removeClass("optionsSelected");
var newSelId = selId - 1;
$("#briefOption"+newSelId).addClass("optionsSelected");
}
}
else if (keycode == 40) { // down arrow
var selection = $(".optionsSelected").attr("id");
var selId = parseInt(selection.replace('briefOption', ''));
if (selId != numAvEmps && numAvEmps != 0) {
$(".optionsSelected").removeClass("optionsSelected");
var newSelId = selId + 1;
$("#briefOption"+newSelId).addClass("optionsSelected");
}
}
else if (keycode == 27) { // Escape
$("#docDropDown").css("display","none");
}
else if (keycode == 9 || keycode == 13) { //tab or enter
/* Fill form */
}
Merci pour l'aide.
Pour une raison quelconque quand je frappe la flèche, le curseur revient à la début du texte. Il est difficile de savoir ce qui ne va pas, parce que quand j'entre dans le code avec firebug ou l'outil de Chrome, le navigateur entier perd le focus, donc je ne peux pas voir où le curseur est et quand il se déplace. – smfoote
@smfoote - Avez-vous essayé d'utiliser ce que j'ai écrit ci-dessus? Est-ce que vous placez le curseur * après * vous avez fait quelque chose? Pourriez-vous poster le code HTML pertinent? – TheCloudlessSky
Cela serait utile si les flèches haut et bas devaient déplacer le focus ailleurs mais, comme elles ne le seront pas, sauvegarder l'emplacement et le restaurer semble inutile. Empêcher l'événement par défaut est plus facile. –