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 :

[Textarea] Sélection dans un textarea sous IE


Sujet :

JavaScript

  1. #1
    Membre actif Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Points : 204
    Points
    204
    Par défaut [Textarea] Sélection dans un textarea sous IE
    Bonjour,

    j'ai une fonction qui gère le formatage d'un texte contenu dans un textarea.
    Elle réagit à l'appel de boutons.
    La portion de code qui suit fonctionne très bien sous firefox mais sous IE je n'arrive pas à lui faire prendre ma sélection.
    Je tourne autour du pot, il y a une erreur dans mon script que je ne dégotte pas.
    Résultat sous IE il place les pseudos balises autour de l'ensemble du texte compris dans le champ...

    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    function format(id_source, baliseArea , classeHTML ,id_source, id_cible , id_preview) {
        elt = $(id_source);
        texte = elt.value;
        //pour IE
        if(typeof elt.selection != 'undefined'){
            elt.focus();
            var sel = elt.createTextRange(); //récupère une zone de texte
            sel.moveToBookmark(document.selection.createRange().getBookmark());//déplace toi jusqu'au point d'insertion
            sel.moveStart('character', - elt.value.length);
            var Debut = sel.text.length;
            sel.moveEnd('character', elt.value.length);
            var Fin = elt.value.length - sel.text.length;
            var milieu = "["+ baliseArea + "]http://" +  elt.value.substring(Debut, Fin) + "[/" + baliseArea + "]" ;
     
            var tdebut=""; // chaine avant la selection
            var tfin=""; // chaine apres la selection
            for (i = 0 ; i<texte.length ;i++ ){
                if (i < Debut){
                    tdebut+=texte.charAt(i);
                }
                if (i >= Fin){
                    tfin+= texte.charAt(i);
                }
            }
            if (milieu){
                elt.value = tdebut + milieu + tfin;    
            }
            else{
                elt.value = tdebut + "["+ baliseArea + "][/" + baliseArea + "]" + tfin; //nouvelle chaîne vide
            }
        }
        else { //pour firefox
            var sel = elt.value.substring(elt.selectionStart, elt.selectionEnd);
            var Debut = elt.value.substring( 0, elt.selectionStart );
            var Fin = elt.value.substring (elt.selectionEnd, elt.selectionEnd +1000);
            var milieu = "["+ baliseArea + "]" +  sel + "[/" + baliseArea + "]" ;
            if (milieu){
                elt.value = Debut + milieu + Fin;    
            }
            else{
                elt.value = Debut + "["+ baliseArea + "][/" + baliseArea + "]" + Fin; //nouvelle chaîne vide
            }
        } 
     
        identique(id_source , id_cible , id_preview)
    }
    Peut-on m'aider à y voir plus clair ? Merci

  2. #2
    Membre actif Avatar de elvan49
    Profil pro
    Développeur Web
    Inscrit en
    Octobre 2006
    Messages
    274
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Octobre 2006
    Messages : 274
    Points : 204
    Points
    204
    Par défaut Débuggage en direct
    Re-bonjour à ceux qui survolent ce topic !

    voici la fonction qui tourne !
    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
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
    function format(id_source, baliseArea , classeHTML ,id_source, id_cible , id_preview) {
        var elt = $(id_source);
        var origine = document.forms['form_info'].id_source;
        var baliseDebut = "["+ baliseArea + "]";
        var baliseFin = "[/" + baliseArea + "]";
        //pour IE
        if(typeof document.selection != 'undefined'){
             //var str = document.selection.createRange().text;
              var sel = document.selection.createRange();
              var insText = sel.text;
              sel.text = baliseDebut + insText + baliseFin;
              if (insText.length == 0) {
                  sel.move('character', -baliseFin.length);
            } else {
                  sel.moveStart('character', baliseDebut.length + insText.length + baliseFin.length);
            }
        sel.select();
        }
        else {
            var sel = elt.value.substring(elt.selectionStart, elt.selectionEnd);
            var Debut = elt.value.substring( 0, elt.selectionStart );
            var Fin = elt.value.substring (elt.selectionEnd, elt.selectionEnd +1000);
            var milieu = "["+ baliseArea + "]" +  sel + "[/" + baliseArea + "]" ;
            if (milieu){
                elt.value = Debut + milieu + Fin;    
            }
            else{
                elt.value = Debut + "["+ baliseArea + "][/" + baliseArea + "]" + Fin; //nouvelle chaîne vide
            }
        } 
     
        identique(id_source , id_cible , id_preview)
    }
    Bien-sûr la fonction identique n'a aucun intérêt pour la résolution de ce problème...

    à suivre dans de nouvelles aventures !

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

Discussions similaires

  1. [Plugin] RTE Sélection dans mon textarea
    Par leame dans le forum jQuery
    Réponses: 0
    Dernier message: 03/05/2013, 11h36
  2. Récupérer la sélection de l'utilisateur dans un textarea.
    Par Nekomata dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 21/11/2012, 15h33
  3. Pointer une sous-chaîne dans un TEXTAREA
    Par JohnBegood dans le forum jQuery
    Réponses: 3
    Dernier message: 18/10/2012, 12h31
  4. affichage <textarea> dans un <fieldset> sous IE
    Par RootsRagga dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 04/04/2009, 16h53
  5. Caratère spécial dans un textArea
    Par sigas dans le forum Composants
    Réponses: 4
    Dernier message: 21/07/2004, 12h18

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