Est-ce que quelqu'un connaît une solution fiable et fiable pour attraper des presses de la clé à tabulation dans un champ Texarea et remplacer (dans la position correcte) 4 espaces? Le Textarea est utilisé pour saisir un essai et a besoin de cette fonctionnalité. p>
Remarque: j'ai essayé d'utiliser FCKeditor, entre autres, ce qui n'a pas attrapé des onglets et n'avait pas eu de traits que je n'avais pas besoin. Je veux une solution simple juste pour attraper des onglets. P>
3 Réponses :
y a-t-il une raison pour laquelle vous ne pouvez pas simplement remplacer les onglets après la modification? J'ai déjà joué un peu de texte en remplaçant du texte tout en tapant dans une Textarea et l'a trouvé comme étant ... de manière irréaliste. P>
Le point est que l'utilisateur doit pouvoir insérer des "onglets" lorsqu'il utilise la page, mais par défaut, les cycles de touches d'onglets se concentrent sur l'élément suivant.
Ensuite, vous entrez dans des implémentations de navigateur sur le navigateur sur le navigateur, ce qui est quelque chose que je n'ai jamais été assez courageux pour essayer. Bonne chance!
Je n'ai pas fait de tès beaucoup de test, mais cela semble fonctionner:
(J'ai trouvé la fonction "insertcursor" à http://alexking.org/blog/2003/06/02/inserting-at-the-cursor-javascript#Comment -3817 ) p> edit strud>: modifié le script afin qu'il n'utilise pas jQuery. P> p>
<html> <head> <script type="text/javascript"> function keyHandler(e) { var TABKEY = 9; var backSlash = 8; var code = e.keyCode ? e.keyCode : e.charCode ? e.charCode : e.which; if(code == TABKEY && !e.shiftKey && !e.ctrlKey && !e.altKey) { var val = document.getElementById("t1"); val.value=(val.value).substring(0,getCaret(val)) + " " + (val.value).substring(getCaret(val)); //document.getElementById("t1").value += " "; if(e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } val.focus(); return false; } if(code == backSlash) { var val = document.getElementById("t1"); val.value=(val.value).substring(0,getCaret(val)-4) + (val.value).substring(getCaret(val)); if(e.preventDefault) { e.preventDefault(); } else { e.returnValue = false; } return false; } } function getCaret(el) { if (el.selectionStart) { return el.selectionStart; } else if (document.selection) { el.focus(); var r = document.selection.createRange(); if (r == null) { return 0; } var re = el.createTextRange(), rc = re.duplicate(); re.moveToBookmark(r.getBookmark()); rc.setEndPoint('EndToStart', re); return rc.text.length; } return 0; } </script> </head> <body> <textarea id="t1" onkeydown="javascript:keyHandler(event)"></textarea> </body> </hrml>
Peut-être dupliqué Stackoverflow.com/Questtions/3362/ Capturer-Tab-Key-in-text-b ox
Cette solution ne fonctionne pas en ligne (si des onglets se produisent au milieu de la chaîne) je pense