Capture de la touche TAB dans la zone de texte

J'aimerais pouvoir utiliser la touche Tabulation dans une zone de texte pour tabuler sur quatre espaces. Dans l'état actuel des choses, la touche Tab fait passer mon curseur à l'entrée suivante.

Y a-t-il du JavaScript qui capture la touche Tab dans la zone de texte avant qu'elle ne s'affiche dans l'interface utilisateur ?

Je comprends que certains navigateurs (comme FireFox) ne le permettent pas. Que diriez-vous d'une combinaison de touches personnalisée comme Shift Tab, ou Ctrl Q ?

请先 登录 后评论

5 réponses

Tom

La réponse précédente est correcte, mais je fais partie de ceux qui sont fermement opposés au mélange du comportement avec la présentation (mettre du JavaScript dans mon HTML), donc je préfère mettre ma logique de gestion des événements dans mes fichiers JavaScript. De plus, tous les navigateurs n'implémentent pas l'événement (ou e) de la même manière. Vous voudrez peut-être effectuer une vérification avant d'exécuter une logique :

document.onkeydown = TabExample;

function TabExample(evt) {
  var evt = (evt) ? evt : ((event) ? event : null);
  var tabKey = 9;
  if(evt.keyCode == tabKey) {
    // do work
  }
}
请先 登录 后评论
Lauren

Je préfère que l'indentation des tabulations ne fonctionne pas plutôt que de casser la tabulation entre les éléments du formulaire.

Si vous souhaitez mettre en retrait pour mettre du code dans la zone Markdown, utilisez Ctrl K (ou ⌘K sur un Mac).

En termes d'arrêt réel de l'action, jQuery (que Stack Overflow utilise) empêchera un événement de se propager lorsque vous renvoyez false à partir d'un rappel d'événement. Cela facilite le travail avec plusieurs navigateurs.

请先 登录 后评论
Wally Lawless

Je déconseille de modifier le comportement par défaut d'une clé. Je fais autant que possible sans toucher une souris, donc si vous faites en sorte que ma touche de tabulation ne passe pas au champ suivant sur un formulaire, je serai très agacé.

Une touche de raccourci pourrait cependant être utile, en particulier avec les gros blocs de code et l'imbrication. Shift-TAB est une mauvaise option car cela me ramène normalement au champ précédent d'un formulaire. Peut-être qu'un nouveau bouton sur l'éditeur WMD pour insérer un code-TAB, avec une touche de raccourci, serait possible ?

请先 登录 后评论
Paul D. Waite

Dans Chrome sur Mac, alt-tab insère un caractère de tabulation dans un champ <textarea>.

En voici une : . Pipi !

请先 登录 后评论
chintan123

il y a un problème dans la meilleure réponse donnée par ScottKoon

voici

} else if(el.attachEvent ) {
    myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}

Devrait être

} else if(myInput.attachEvent ) {
    myInput.attachEvent('onkeydown',this.keyHandler); /* damn IE hack */
}

Pour cette raison, cela ne fonctionnait pas dans IE. En espérant que ScottKoon mettra à jour le code

请先 登录 后评论