Utilisez les touches fléchées pour naviguer dans un tableau HTML
J'ai créé un tableur de base à l'aide d'un tableau HTML. Il fonctionne parfaitement, sauf que l'utilisateur doit utiliser la souris pour cliquer sur chaque <td>
afin de le modifier. Je suis à la capture de l'événement click avec jQuery et l'affichage d'une boîte de dialogue pour modifier. Je voudrais que l'utilisateur puisse utiliser les touches fléchées pour naviguer à chaque cellule, la cellule de fond de css changer pour indiquer l'accent, et en cliquant sur la touche Entrée déclencherait le jQuery boîte de dialogue de l'événement. J'utilise jQuery 1.9.
Ici est un jsfiddle de fondamentalement, ce que j'ai.
Comment sauver la cellule actuellement sélectionnée, de sorte que lorsque vous cliquez sur une cellule avec la souris, puis utilisez les touches de direction, il va naviguer à partir de la "courant" de la cellule?
Grâce.
double possible de Comment puis-je faire les touches fléchées haut et bas à naviguer sur un tableau de lignes, et par programme à appliquer le sudo :hover pour ces lignes?
Ce que le HTML, le CSS et le code JavaScript avez-vous maintenant? Il semble que vous devriez utiliser
contenteditable=true
sur les cellules, mais êtes-vous à l'aide de certains approche complètement différente?Ce poste est similaire, mais seulement traverse les lignes, pas les cellules. Et seul le clavier peut être utilisé pour la navigation, pas la souris.
Les principes sont les mêmes. Vous avez besoin d'un clavier maître et une méthode pour stocker la position du curseur. Il y a beaucoup d'exemples si vous regardez pour eux. stackoverflow.com/search?q=javascript+arrow+keys+html+table
OriginalL'auteur Lane | 2014-04-02
Vous devez vous connecter pour publier un commentaire.
Ci-dessous est à la vanille, JavaScript solution à l'aide de la onkeydown de l'événement et à l'aide de la previousElementSibling et nextElementSibling propriétés.
https://jsfiddle.net/rh5aoxsL/
Le problème avec l'aide de tabindex est que vous ne soyez pas à naviguer de la manière que vous le feriez dans Excel et vous pouvez naviguer loin de la feuille de calcul elle-même.
Le code HTML
Le CSS
Le JavaScript
$(document).keydown(function(e) {...
et que je ne peux pas utiliser quelque chose de plus ciblé comme$(document).on("keydown", "td", function(e) {...
- ce que quelqu'un sait si c'est juste parce quetabindex
n'est pas appliquée à<td>
's - je ne veux pas appliquertabindex
à<td>'s
parce que les tables sont ajoutés et supprimés de façon dynamique. Est-il un moyen d'appeleron()
plus précisément? jsFiddleIl dispose également d': cliquez sur l'accent de la cellule, lorsqu'au début ou à la fin de la rangée, de gauche ou de droite déplacer précédente ou suivante de lignes, si elles existent, sinon ils se déplacent à la précédente ou suivante de la table si elle existe, et un gestionnaire pour Entrer événement keypress.
OriginalL'auteur huehuehue
J'ai tout compris, d'après les renseignements que j'ai trouvé sur quelques posts. J'ai roulé tous ensemble, et les résultats sont parfaits.
Remarque: Vous mettre une
tabindex
l'attribut de chaque<td>
pour permettre la navigation.Voici le jsfiddle. Le même code est éclaté ci-dessous.
Le code HTML:
Le CSS:
Le jQuery:
Je ne suis pas sûr. J'ai regardé épine Dorsale, mais je ne l'ai jamais utilisé. Si vous pouvez déterminer ce qui doit être changé, poste une autre réponse à cette question; je voudrais voir votre travail.
OriginalL'auteur Lane
Pour la touche flèche en se concentrant, j'ai fini regroupant un tas de différentes solutions posté ici et est venu avec cette. Toujours pas sûr de savoir pourquoi .next(), ou .prev() ne fonctionne pas pour les lignes... semblait avoir besoin .prevAll et .nextAll pour une raison:
OriginalL'auteur pcalkins