Problème avec un code pour le bbcode

Résolu
dixy2 Messages postés 4 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 1 avril 2006 - 31 mars 2006 à 19:59
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 - 2 avril 2006 à 07:20
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

cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 avril 2006 à 15:08
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>
3
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 avril 2006 à 06:23
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>
0
dixy2 Messages postés 4 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 1 avril 2006
1 avril 2006 à 13:12
Oui je veux bien mais ça change quoi au code ??
La variable bd n'existe pas ?
0
dixy2 Messages postés 4 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 1 avril 2006
1 avril 2006 à 16:14
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
1 avril 2006 à 16:27
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>
0
dixy2 Messages postés 4 Date d'inscription vendredi 31 mars 2006 Statut Membre Dernière intervention 1 avril 2006
1 avril 2006 à 17:21
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 ?
0
cs_bultez Messages postés 13615 Date d'inscription jeudi 13 février 2003 Statut Membre Dernière intervention 15 octobre 2013 30
2 avril 2006 à 07:20
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>
0
Rejoignez-nous