Maison >interface Web >js tutoriel >Comment obtenir la position du caret dans une zone de texte en caractères ?
Obtention de la position du curseur dans une zone de texte en caractères depuis le début
Détermination de la position du curseur dans une zone de texte
Dans les navigateurs basés sur Mozilla comme Firefox et Safari, vous pouvez accéder directement à textarea.selectionStart pour obtenir la position du curseur dans termes de personnages dès le début. Cependant, pour les navigateurs comme Internet Explorer, cette approche peut ne pas fonctionner.
Pour une compatibilité entre navigateurs, vous pouvez implémenter la fonction JavaScript suivante :
function getCaret(node) { if (node.selectionStart) { return node.selectionStart; } else if (!document.selection) { return 0; } var c = "1", sel = document.selection.createRange(), dul = sel.duplicate(), len = 0; dul.moveToElementText(node); sel.text = c; len = dul.text.indexOf(c); sel.moveStart('character',-1); sel.text = ""; return len; }
Cette fonction utilise la sélection document. objet, disponible dans IE, pour déterminer la position du curseur. Il crée d'abord un objet plage, le duplique et déplace la plage au début de la zone de texte. Ensuite, il ajoute un caractère spécial à la position du caret et calcule la longueur du texte suivant. Cela fournit la position basée sur les caractères.
Pour une solution plus complète, il existe des plugins comme jQuery FieldSelection Plugin qui offrent des capacités avancées de sélection et de manipulation de texte dans les zones de texte.
Enfin, il est important de noter que le code inclut une section "Modifier" avec une implémentation mise à jour de la fonction getCaret, qui est plus optimisée. Assurez-vous de vous référer à l'exemple de code mis à jour pour la dernière version de la fonction.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!