Problème createRange()

Signaler
Messages postés
3
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
1 avril 2008
-
Messages postés
3
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
1 avril 2008
-
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

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

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
Messages postés
3426
Date d'inscription
lundi 26 décembre 2005
Statut
Membre
Dernière intervention
14 janvier 2011
14
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)
Messages postés
3
Date d'inscription
jeudi 23 février 2006
Statut
Membre
Dernière intervention
1 avril 2008

Merci c'est bon ca fonctionne
Bravo