Comment obtenir le signe de la colonne (pas de pixels) position dans un textarea, dans les personnages, depuis le début?
Comment obtenez-vous la position du curseur dans un <textarea>
à l'aide de JavaScript?
Par exemple: This is| a text
Il doit retourner 7
.
Comment voulez-vous obtenir le retour des chaînes entourant le curseur de sélection/?
E. g.: 'This is', '', ' a text'
.
Si le mot “est” est mis en surbrillance, puis il serait de retour 'This ', 'is', ' a text'
.
- Voir cette question: stackoverflow.com/questions/164147/... et si vous avez des retours à la ligne, aussi la note à ce sujet ici: stackoverflow.com/questions/235411/...
- Si vous utilisez jQuery, vous pouvez utiliser jquery curseur plugin $('textarea').getSelection().démarrer plugins.jquery.com/plugin-tags/caret @++
- A trouvé une bonne solution à blog.vishalon.net/index.php/... je l'ai testé sous firefox et chrome, et cela a fonctionné dans les deux. L'écrivain dit qu'il fonctionne dans IE+l'Opéra en tant que bien.
- Simple d'utilisation
textarea.selectionStart
,textarea. selectionEnd
,textarea.setSelectionRange
developer.mozilla.org/en-US/docs/Web/API/HTMLTextAreaElement
Vous devez vous connecter pour publier un commentaire.
Avec Firefox, Safari (et les autres navigateurs basés sur Gecko), vous pouvez facilement utiliser textarea.selectionStart, mais pour IE qui ne fonctionne pas, alors vous aurez à faire quelque chose comme ceci:
(code complet ici)
Moi aussi je vous recommande de vérifier le jQuery FieldSelection Plugin, il vous permet de le faire et bien plus encore...
Edit: j'ai fait re-mise en œuvre le code ci-dessus:
Vérifier un exemple ici.
Safari (and other Gecko based browsers)
Semble impliquer que Safari utilise Gecko. Gecko est Mozilla moteur; Safari utilise WebKit.if (el.selectionStart) { return el.selectionStart; }
...Mis À Jour Le 5 Septembre 2010
De voir que tout le monde semble l'avoir dirigé ici pour ce problème, je vais ajouter ma réponse à une question similaire, qui contient le même code que cette réponse, mais avec un arrière-plan pour ceux qui sont intéressés:
IE document.sélection.createRange ne comprend pas de leader ou suiveur de lignes vides
De compte pour la fuite des sauts de ligne est délicate dans IE, et je n'ai pas vu de solution qui fait cela correctement, y compris toutes les autres réponses à cette question. Il est cependant possible, à l'aide de la fonction suivante, qui va vous retourner le début et la fin de la sélection (qui sont les mêmes dans le cas d'un accent circonflexe) au sein d'un
<textarea>
ou texte<input>
.Noter que le textarea doit avoir le focus pour que cette fonction fonctionne correctement sous IE. En cas de doute, appelez le textarea du
focus()
d'abord la méthode.range && range.parentElement() == el
est là pour tester si la sélection se trouve dans le textarea et est nécessaire. Il n'y a pas de problème avec la fonction de l'obtention de la position du curseur tant que la zone de texte a le focus. En cas de doute, appelez le textarea dufocus()
méthode avant d'appelergetInputSelection()
. Je vais ajouter une note à la réponse.mousedown
de l'événement ou de l'ajout d'unselectable="on"
à la<div>
élément.unselectable="on"
option a mieux fonctionné dans mon cas. Vous m'a vraiment aidé beaucoup! Continuer à fournir un soutien incroyable pour vos réponses!J'ai modifié la fonction ci-dessus pour tenir compte des retours chariot dans IE. Il est non testé, mais j'ai fait quelque chose de similaire avec elle dans mon code, donc ça devrait être réalisable.
Si vous n'avez pas à soutenir IE, vous pouvez utiliser
selectionStart
etselectionEnd
attributs detextarea
.Pour obtenir la position du curseur utilisez simplement
selectionStart
:Pour obtenir les cordes autour de la sélection, utilisez le code suivant:
Démo sur JSFiddle.
Voir aussi HTMLTextAreaElement docs.