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...
Peut-on m'aider à y voir plus clair ? MerciCode:
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) }
