Problème createRange()

cs_damsdu92
Messages postés
3
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
1 avril 2008
- 31 mars 2008 à 19:38
cs_damsdu92
Messages postés
3
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
1 avril 2008
- 1 avril 2008 à 11:32
Bonjour,

J'ai actuellement un petit soucis avec la methode createRange() .
Je vous explique :
Sur le site que je suis en train de faire, je souhaite mettre en place un textarea dans lequel je souhaite faire un peu de mise en page avec du BB code.
J'ai récupéré une fonction qui permet d'insérer mes balises de mise en forme. La fonction marche bien sur une page de test la plus simple possible. Par contre en faisant un copier coller dans ma page, là elle ne fonctionne qu'à moitié.
Le BB code s'insère bien là où se trouve le curseur, mais si on selectionne un texte pour que les balises l'entourent le BB code se place à l'endroit où on clique pour faire la selection, mais ne l'entoure pas.

Donc j'ai fais un test :
- J'ai mis un alert(); pour voir si la fonction recupère bien la selection. Sur la page test ca fonctionne il m'affiche le texte selectionné mais sur ma page la selection est vide.

Je ne comprend pas pourquoi cette selection est vide.

Pouvez vous m'aider svp ?

4 réponses

PetoleTeam
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
31 mars 2008 à 19:51
Bonjour,
Difficile de te dire sans aucune ligne de
code
Néanmoins une source qui peut t'aider
CURSEUR dans TEXTAREA
;O)
0
cs_damsdu92
Messages postés
3
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
1 avril 2008

31 mars 2008 à 20:08
Je vous mets le code en zappant les parties non concernées.

<html>

<head>
<link rel="Stylesheet" href="css/css1.css" content="text/css">
<script type="text/javascript">

function insertTag(tag) {

var repdeb="["+tag+"]";
var repfin="/"+tag+"";
var input = document.forms['formulaire'].elements['commentaires'];
//var input = document.getElementById('commentaires');
input.focus();

/* pour l'Explorer Internet */
if(typeof document.selection != 'undefined') {
/* Insertion du code de formatage */
var range = document.selection.createRange();
var insText = range.text;
alert(insText);
range.text = repdeb + insText + repfin;
/* Ajustement de la position du curseur */
range = document.selection.createRange();
if (insText.length == 0) {
range.move('character', -repfin.length);
}
else {
range.moveStart('character', repdeb.length + insText.length + repfin.length);
}
range.select();
}
}



</script>
</head>




<form name="formulaire">
Déposer un commentaire,

----

Votre prénom :,
,

----

Votre commentaire :,
<table border="0" cellpadding="0" cellspacing="0" class="barre_boutons" height="20px">
----,
G
</td>

</td>
</tr>
<tr>
<td align="left" class="form2" width="20%"> </td>
<td align="left" class="form2"><textarea name="commentaires" cols="80" rows="7"></textarea></td>
</tr>
</table>
</form>
</td>
</tr>
</table>






</html>

Voilà j'espère que cela va vous aider
0
PetoleTeam
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
18
31 mars 2008 à 21:50
Ton problème viens du fait que ta
TEXTAREA perd le focus, donc il n'existe plus de selection, au moment ou tu
cliques sur le document...
...essaies de remplacer ton DIV par un input
;O)
0
cs_damsdu92
Messages postés
3
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
1 avril 2008

1 avril 2008 à 11:32
Merci c'est bon ca fonctionne
Bravo
0