2008-12-27 9 views
5

Les navigateurs Web sont de bons clients légers pour les applications Web. Mais si l'utilisateur doit entrer du code (où les onglets et le formatage sont importants) dans une boîte d'édition, il navigue dans les contrôles de la page Web à chaque fois qu'il appuie sur la touche "tab" au lieu d'imprimer. le caractère "tab".Comportement des touches de tabulation dans le contrôle d'édition du navigateur

Existe-t-il des contrôles Web gratuits ou y a-t-il du code pour obtenir le comportement opposé?
Google Docs le fait parfaitement.

Merci.

Répondre

3

La bibliothèque Yahoo UI a un rich text editor qui gère correctement les caractères de tabulation.

EDIT: Je suspecte (parce que je n'ai pas regardé) que l'éditeur YUI et l'éditeur de Google accomplissent cela en ajoutant un gestionnaire onKeyPress au conteneur de texte. Lorsqu'ils détectent un caractère de tabulation, ils ajoutent un onglet au conteneur et retournent false pour annuler l'action de tabulation normale.

2

Vous pouvez filtrer l'événement keyDown et attraper la touche de tabulation:

<html> 
<body> 
<script type="text/javascript"> 
function keyFilter(e, field) { 
    var key = window.event ? e.keyCode : e.which; 
    if (key == 9) { 
    field.value += "\t"; 
    return false; 
    } 
    return true; 
} 
</script> 

<form> 
<textarea onkeydown="return keyFilter(event, this);"></textarea> 
</form> 
</html> 

EDIT: Notez qu'il est bien sûr plus compliqué que cela. Il faut garder une trace de l'endroit où le texte est enfoncé dans la touche de tabulation et insérer le caractère en conséquence.

+0

Sur mon Macintosh dans Firefox, vous devez vérifier e.keyCode pour un caractère de tabulation comme e.which n'est pas défini. – tvanfosson

+0

Quelqu'un sait comment le faire (obtenir le code clé) correctement? – PEZ

+0

Ummm ... Sur mon Mac dans Firefox, le code ci-dessus fonctionne. Et cela fonctionne aussi dans Safari. – PEZ