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 17
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 17
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
Rejoignez-nous