Problème avec un code pour le bbcode [Résolu]

Signaler
Messages postés
4
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
1 avril 2006
-
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
-
Bonjour,



J'ai un problème avec un code javascript insérant les balises bbcodes dans un textarea.

Mon problème est que sur internet explorer, la fonction insère au
premier clique une balise, au deuxième 3 balises, au troisième 9
balises, et ainsi de suite jusqu'a que ie plante



Voilà le code :

<!-- BBCode Start --><table bgcolor="#e6effe" border="0" cellpadding="5" cellspacing="0" width="100%">----, <tt>function storeCaret(id_textarea)
{
champ = document.getElementById(id_textarea);
if (champ.createTextRange)
champ.curseur = document.selection.createRange().duplicate();
}

function add_balise(balise_debut, balise_fin, id_textarea)

{

var champ = document.getElementById(id_textarea);

var scroll = champ.scrollTop;

if(balise_fin == '')

balise_debut = ' ' + balise_debut + ' ';

if (champ.curseur)

{

champ.curseur.text = balise_debut + champ.curseur.text + balise_fin;

}

else if (champ.selectionStart != 'undefined' && champ.selectionEnd != 'undefined')

{

var debut = champ.value.substring(0, champ.selectionStart);

var entre = champ.value.substring(champ.selectionStart, champ.selectionEnd);

var fin = champ.value.substring(champ.selectionEnd);

champ.value = debut + balise_debut + entre + balise_fin + fin;

champ.focus();

champ.setSelectionRange(debut.length + balise_debut.length, champ.value.length - fin.length - balise_fin.length);

}

else

{

champ.value += balise_debut + balise_fin;

champ.focus();

}

champ.scrollTop = scroll;

}

</tt></td>
</td></tr></tbody></table><!-- BBCode End -->



merci d'avance

7 réponses

Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
euh.... à l'heure où j'ai répondu, ça ne peut être que l'alcool...
je ne sais pas du tout ce que j'ai voulu dire...

mais ci dessous ça sera peut-être pire ( quand on est mal barré... )

<HTML>
<HEAD>
<TITLE></TITLE>
</HEAD>

<script>
function storeCaret(id_textarea)
{
champ = document.getElementById(id_textarea);
if (champ.createTextRange)
champ.curseur = document.selection.createRange().duplicate();
}


function add_balise(balise_debut, balise_fin, id_textarea)
{
var champ = document.getElementById(id_textarea);
var scroll = champ.scrollTop;
var bd=balise_debut;
if(balise_fin == '')
bd = ' ' + bd + ' ';


if (champ.curseur)
{
champ.curseur.text = bd + champ.curseur.text + balise_fin;
}
else if (!champ.selectionStart)
{
var debut = champ.value.substring(0, champ.selectionStart);
var entre = champ.value.substring(champ.selectionStart, champ.selectionEnd);
var fin = champ.value.substring(champ.selectionEnd);
champ.value = debut + bd + entre + balise_fin + fin;
champ.focus();
}
else
{
champ.value += bd + balise_fin;
champ.focus();
}
champ.scrollTop = scroll;
}
</script>
<textarea name="txt"
id="txt"
onkeyup="storeCaret('txt');"></textarea>
','</ex>','txt');">

</HTML>

mis onkeyup seulement... pour les essais
cela aurait été mieux d'avoir les balises html nécessaires...
testé uniquement avec IE donc.
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>

</FO>
</S< body>
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
Bonjour,
déjà dans un 1er temps :
mettre champ.value = bd + entre + balise_fin ;
au lieu de
champ.value = debut + balise_debut + entre + balise_fin + fin;
Cordialement. Bul. ~
Mon Site qu'il est à Moi ~
<FO>
</FO>
</S< body>
Messages postés
4
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
1 avril 2006

Oui je veux bien mais ça change quoi au code ??
La variable bd n'existe pas ?
Messages postés
4
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
1 avril 2006

Merci ça marche a peu près bien. Je dis a peu près car quand je clique pour la première fois sur les boutons, ça bug toujours.
Tu peux le voir ici : http://www.dixy.cliranet.com/i-gloo/index.php?p=ticket&n=8
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
euh... là, je suis à peu près à jeun...
et poutant tout me semble baigner avec ce lien ! [ avec IE ]

au fait ? pourquoi donc faire ça "avec l'équivalent du bbCode" ?
ça oblige ==> javascript => serveur ( php,asp... ) => retour...
il y a, uniquement en JavaScript, des saisies wysiwyg qui marchent
( ne serait-ce que le mien, mais il y en a d'autres !! ).
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>
Messages postés
4
Date d'inscription
vendredi 31 mars 2006
Statut
Membre
Dernière intervention
1 avril 2006

Je comprend pas trop la question : "pourquoi donc faire ça "avec l'équivalent du bbCode" ?
ça oblige ==> javascript => serveur ( php,asp... ) => retour... ".

Pourrais - tu rééxpliquer ?
Messages postés
13616
Date d'inscription
jeudi 13 février 2003
Statut
Membre
Dernière intervention
15 octobre 2013
33
je n'ai pas trop regardé les fonctionnalités, mais en général, quand on utilise
ce genre de script, c'est pour saisir par exemple : normal [gras]exemple en gras/gras
et après l'envoi de ce texte vers le serveur vers un script php, celui-ci réaffichera
normal exemple en gras
je faisais simplement remarqué que la même chose pouvait se faire directement
en javascript, sans échange avec le serveur, sans php. ( mais c'est n'est peut-être
pas le but recherché ici, ou il y a des contraintes que je ne connais pas ... )
Cordialement. Bul. ~ Mon Site qu'il est à Moi ~<FO>
</FO>
</S< body>