Maison > interface Web > js tutoriel > Comment définir par programme la position du curseur dans un élément ContentEditable ?

Comment définir par programme la position du curseur dans un élément ContentEditable ?

Barbara Streisand
Libérer: 2024-12-05 19:20:11
original
946 Les gens l'ont consulté

How to Programmatically Set the Caret Position in a ContentEditable Element?

Définition de la position du curseur dans un élément modifiable au contenu

La définition de la position du curseur dans un div modifiable par le contenu peut être réalisée à l'aide des objets Range et Selection. Voici comment définir le curseur à une position spécifique dans l'élément :

Code :

function setCaret() {
    var el = document.getElementById("editable")
    var range = document.createRange()
    var sel = window.getSelection()
    
    range.setStart(el.childNodes[2], 5)
    range.collapse(true)
    
    sel.removeAllRanges()
    sel.addRange(range)
}
Copier après la connexion

Explication :

  • el représente l'élément contenteditable.
  • range est l'objet Range utilisé pour spécifier la position du curseur.
  • sel est l'objet Selection utilisé pour manipuler la sélection.
  • setStart() définit le début de la plage sur le nœud et le décalage spécifiés (el.childNodes[2] et 5, respectivement).
  • collapse() réduit le plage à un seul point à la position de départ.
  • removeAllRanges() supprime toutes les sélections existantes.
  • addRange() ajoute la plage créée plage à la sélection.

Exemple :

Considérez le HTML suivant :

<div>
Copier après la connexion

Lorsque vous cliquez sur le bouton "focus", la fonction JavaScript setCaret( ) est invoqué en plaçant le signe d'insertion au cinquième caractère de la deuxième ligne de texte.

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal