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