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 :

Positionnement du curseur. NicEdit


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Points : 212
    Points
    212
    Par défaut Positionnement du curseur. NicEdit
    Bonjour à tous!

    Voilà mon problème, comme éditeur wysiwyg j'utilise NicEdit! Et j'ai trouvé comment limiter le nombre de caractère dans mon champs. Le problème c'est que sur chaque mise à jour du champs (quand le nombre max de caractère est atteins) le curseur est automatiquement repositionner au début du champs! Se qui est assez embêtant!
    Pour info il semblerais que mon champs éditable créer par NicEdit est une div!

    Question: Comment faire pour repositionner le curseur à la fin du texte en javascript?

  2. #2
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 46
    Points : 80
    Points
    80
    Par défaut
    Tu peux le faire à l'aide des objets Range et TextRange, mais ils ne disposent pas des mêmes méthodes et propriétés chez IE et Gecko.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
     
    //pour invoquer un objet Range à partir d'une sélection texte :
    //-pour IE :
    var myRange=document.selection.createRange();
    //-pour les autres : 
    var myCont=document.getElementById('maDiv');
    var mySelect=myCont.getSelection();
    var myRange=mySelect.getRangeAt(0);
     
    //pour placer le range : attention, il faut un noeud texte
    var myLastChild=myCont.lastChild;//Attention, il faut trouver le dernier noeud texte, lastChild trouve le dernier noeud, pas forcément type text !
    //pour IE :
    myRange.moveToElementText(myLastChild);
    myRange.collapse(false);
    //pour les autres : 
    myRange.setStart(myLastChild,0);
    myRange.setEnd(myLastChild,myLastChild.nodeValue.length-1);
    myRange.collapse(false);
     
    //pour faire une sélection utilisateur sur le range déplacé :
    //pour IE :
    myRange.select();
    //pour les autres :
    mySelect.removeAllRanges();
    mySelect.addRange(myRange);
    En espérant t'avoir aidé.

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 46
    Points : 80
    Points
    80
    Par défaut
    Ha, bien sûr, les liens qui te permettront d'approfondir le sujet :
    Pour IE : http://msdn.microsoft.com/en-us/libr...(v=VS.85).aspx
    Pour les autres : https://developer.mozilla.org/en/DOM/range

  4. #4
    Membre actif Avatar de Snooky68
    Homme Profil pro
    Développeur Web/Python/PHP
    Inscrit en
    Mai 2006
    Messages
    273
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Développeur Web/Python/PHP
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Mai 2006
    Messages : 273
    Points : 212
    Points
    212
    Par défaut
    Salut!

    Merci beaucoup pour tes réponses! Mais comme tu la précisé il faut un noeud texte, et j'ai une div!
    Donc sa na pas marché!

    J'ai découvert que se que je cherchais n'existe pas en faite! Donc j'ai contourné le problème! (j'utilise un éditeur bbcode avec une prévisualisation en temps réel!)

    Bref... résolut...
    Merci

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Janvier 2009
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Janvier 2009
    Messages : 46
    Points : 80
    Points
    80
    Par défaut
    Il faut un noeud texte, et dans ton cas le dernier noeud texte de la div, non?
    Avec un truc de ce genre, que je ne pensais pas devoir préciser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    var div=document.getElementById('madiv');
    var last=div.lastChild;
    while(last && last!=div && last.nodeType!=3){
    if(last.lastChild){
    last=last.lastChild;
    }else if(last.previousSibling){
    last=last.previousSibling;
    }else{
    while(last && last!=div){
    last=last.parentNode;
    }
    }
    Ce que tu cherches existe, mais c'est très verbeux et complexe d'utiliser les textRange, donc on préfère généralement utiliser la fameuse execCommand, dont tous les éditeurs WYSIWYG sont issus, et qui produit un code pas génial.

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

Discussions similaires

  1. TDBGrid + TDBNavigator + Insert => Positionner le curseur
    Par Drooxy dans le forum Bases de données
    Réponses: 2
    Dernier message: 02/03/2005, 19h24
  2. Réponses: 25
    Dernier message: 17/02/2005, 18h02
  3. Problème quant au positionnement du curseur
    Par hams dans le forum x86 16-bits
    Réponses: 2
    Dernier message: 21/12/2004, 22h01
  4. Réponses: 6
    Dernier message: 06/05/2004, 09h05
  5. RichEdit tjs positionner le curseur en bas du texte
    Par microseb dans le forum C++Builder
    Réponses: 2
    Dernier message: 16/05/2003, 17h48

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