Bon, que je vous explique...
Je cherche à faire une fonction javascript pour qu'appuyer sur la touche de tabulation alors qu'un textearea à le focus insère effectivement une tabulation dans ce textearea. De la manière la plus propre et la plus pratique, bien sur.
Eùh, oui, aussi, habituellement j'essaye de faire une version pour Firefox et une autre pour IE, mais dans le cas présent, seule la partie Firefox m'interresse.
Donc, j'ai commencé par simplementavec un onKeyDown="doTab(this, event);" dans le textarea concerné.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 function doTab(elem, even) { if (String.fromCharCode(even.which)=="\t") { elem.value += "\t"; } }
Bon, ça marche bien (Je développerais quand même plus tard pour que la tabulation soit affichée à l'endroit où se trouve le curseur, mais passons), sauf que ça n'empêche pas la fonction "normale" de la touche tabulation d'avoir lieu.
Alors bon, nouvelle tentativetoujours onKeyDown.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function doTab(elem, even) { if (String.fromCharCode(even.which)=="\t") { elem.value += "\t"; elem.focus(); } }
Seulement là, ça ne change rien, parce que l'appel à focus() à lieu avant. J'essaye onKeyUp, mais dans ce cas, on a changé de champ avant que ça ait appelé la fonction.
Ruse de sioux, j'essayeen passant à la fonction onKeyDown, l'id du champ précédent le textarea. Comme ça, une fois la valeur modifiée, ça met le focus sur le champ prédécent, et donc, la tabulation me ramène sur le champ courant.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 function doTab(elem, even, eid) { if (String.fromCharCode(even.which)=="\t") { elem.value += "\t"; document.getElementById(eid).focus(); } }
Oui mais! Appuyer simultanément sur les touches shift et tabulation donne un résultat absolument identique, à ceci près qu'avec le changement de focus, on se retrouve désormais deux champs plus haut. Pas glop. Et là, je sèche.
Donc voilà. Quelqu'un connaitrait-il un moyen de différencier tab de shift+tab, voire de parvenir à ce résultat d'une autre manière?
Merci d'avance.
Partager