IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

JavaScript Discussion :

Positionner le curseur dans un div éditable


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur web amateur

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Par défaut Positionner le curseur dans un div éditable
    Bonjour à tous ! J'ai un gros problème

    Nouveau problème : le curseur "ne veux pas" se positionner au début d'une ligne.

    Si, avec le clavier, je positionne le curseur sur le début d'une ligne (avant le premier caractère de la ligne), il retourne au début du texte, ou à la fin de la ligne précédente si celle-ci comporte du texte.

    Si je vais au début d'une ligne (par exemple quant il y a 5 lignes vides puis du texte), parfois le curseur se positionne au début de la première ligne contenant du texte, parfois il revient au début.


    Quelqu'un sait-il pourquoi et a-t-il une solution ?

    Merci d'avance !


    Merci d'avance à ceux qui pourraient faire avancer la résolution de mon problème !

  2. #2
    Membre éprouvé
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2014
    Messages : 48
    Par défaut
    Informations pour les futurs lecteurs:
    Nouveau problème : le curseur "ne veux pas" se positionner au début d'une ligne.

    Si, avec le clavier, je positionne le curseur sur le début d'une ligne (avant le premier caractère de la ligne), il retourne au début du texte, ou à la fin de la ligne précédente si celle-ci comporte du texte.

    Si je vais au début d'une ligne (par exemple quant il y a 5 lignes vides puis du texte), parfois le curseur se positionne au début de la première ligne contenant du texte, parfois il revient au début.


    Quelqu'un sait-il pourquoi et a-t-il une solution ?

    Merci d'avance !
    lien de l'essai: http://jsfiddle.net/fax1vznu/1/

    Salut,
    Je ne comprend pas de problème, le code que tu a donné semble fonctionner
    que dois-je faire (écrire quoi, mettre mon curseur où, sélectionner quoi)
    pour qu'un bug survienne ?

  3. #3
    Membre averti
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur web amateur

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Par défaut Désolé...
    Il suffit d'aller sur cette page : http://jsfiddle.net/fax1vznu/1/

    De saisir du texte et d'appuyer sur la touche ENTRÉE : Le curseur va revenir à la première ligne

    Et désolé si je n'ai pas été assez clair...
    J'utilise un div possédant l'attribut contenteditable (<div contenteditable="true">) et à chaque fois que l'utilisateur appuie sur une touche, une fonction est exécutée : elle remplace le texte par du HTML en lui faisant subir quelques modifications (ici, ça colore "lol" en bleu).
    Or, le curseur bug : Lorsque l'on place le curseur avec les touches fléchées sur le début d'une ligne (vide), le curseur se déplace à une autre position (parfois la ligne au-dessus, parfois le premier caractère du div, parfois la fin de la ligne précédente, etc.)
    Et je n'arrive pas à corriger ce comportement.

    Quelqu'un saurait-il m'aider ?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2014
    Messages : 48
    Par défaut
    Heu, moi rien de spécial ne se passe. j'écris "bonjour", j'appuye sur enter, et mon curseur va naturellement à la ligne.

    C'est quoi la variable rangy? elle n'est définie nul part dans le code, si?

  5. #5
    Membre averti
    Homme Profil pro
    Développeur web amateur
    Inscrit en
    Novembre 2013
    Messages
    13
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 24
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur web amateur

    Informations forums :
    Inscription : Novembre 2013
    Messages : 13
    Par défaut Bizarre...
    Bizarre... Moi quand je tape "bonjour" et que j'appuie sur la touche entrée mon curseur va à la ligne puis en moins d'une demi-seconde se déplace au tout début du div...
    Quel navigateur et quelle version de ton navigateur utilises-tu ? (ex: Chrome 27)

    EDIT : Ah oui c'est normal firefox fait une erreur pour ça car il ne connaît pas la propriété "innerText". J'ai donc corrigé mon code : http://jsfiddle.net/fax1vznu/3/

    EDIT 2 : Et sur mon smartphone sous Chrome c'est encore plus bizarre quand je tape "lol" ça me rajoute des caractères c'est bizarre

    En tout cas merci pour vos réponses très rapides j'ai pas souvent l'occasion de voir un sujet avec des réponses aussi rapides sur les autres forums.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Lycéen
    Inscrit en
    Mars 2014
    Messages
    48
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 28
    Localisation : Belgique

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Mars 2014
    Messages : 48
    Par défaut
    J'utilise firefox 34.

    Dans ton code, à un moment tu supprime les balises html du contenu: (tu le fait même à 2 endrois je crois)
    el.innerHTML = el.innerHTML.replace(/(<([^>]+)>)/ig,"");
    or, les retours à la lignes dans un div (même s'il est contenteditable) sont des <br>
    donc les brs sont supprimés, le div à une longueur trop petite pour la fonction rangy, elle (ou ton code je n'ai pas tout regardé) défini donc la position à 0.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Forms 6i] Positionnement du curseur dans une liste
    Par Veve44 dans le forum Oracle
    Réponses: 2
    Dernier message: 13/12/2005, 16h28
  2. Réponses: 3
    Dernier message: 27/11/2005, 01h19
  3. positionner le focus dans un div
    Par bat dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 12/10/2005, 11h46
  4. Positionner le curseur dans un champ
    Par Smint dans le forum Access
    Réponses: 17
    Dernier message: 23/09/2005, 21h02
  5. Réponses: 6
    Dernier message: 06/05/2004, 09h05

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo