Kida
Bon j'y arrive pas !
Je vais essaier de vous expliquer plus précisement.
En fait j'ai un un formulaire en Back Office qui permettra aux admin du site de saisir des textes long et je fais donc en sorte qu'ils puissent mettre en forme leurs textes avec du bbcode.
Ensuite en bas du form il y a un bouton "Preview" pour prévisualiser la page avant l'ajout dans la base.
Codes:
Page du form:
Bouton et fonction storeCaret();
<input name="rouge" type="button" id="rouge" style="font-size: 10px" onClick="storeCaret('color=#FF0000')" value="Rouge">
(c'est pas moi qui l'ai faite)
-------------------------------------------
<script language="Javascript">
var isMozilla = (navigator.userAgent.toLowerCase().indexOf('gecko')!=-1) ? true : false;
function storeCaret(selec)
{
if (isMozilla)
{
// Si on est sur Mozilla
oField = document.forms['ajoutMethode'].elements['par1'];
objectValue = oField.value;
deb = oField.selectionStart;
fin = oField.selectionEnd;
objectValueDeb = objectValue.substring( 0 , oField.selectionStart );
objectValueFin = objectValue.substring( oField.selectionEnd , oField.textLength );
objectSelected = objectValue.substring( oField.selectionStart ,oField.selectionEnd );
// alert("Debut:'"+objectValueDeb+"' ("+deb+")\nFin:'"+objectValueFin+"' ("+fin+")\n\nSelectionné:'"+objectSelected+"'("+(fin-deb)+")");
oField.value = objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]" + objectValueFin;
oField.selectionStart = strlen(objectValueDeb);
oField.selectionEnd = strlen(objectValueDeb + "[" + selec + "]" + objectSelected + "[/" + selec + "]");
oField.focus();
oField.setSelectionRange(
objectValueDeb.length + selec.length + 2,
objectValueDeb.length + selec.length + 2);
}
else
{
// Si on est sur IE
oField = document.forms['ajoutMethode'].elements['par1'];
var str = document.selection.createRange().text;
if (str.length>0)
{
// Si on a selectionné du texte
var sel = document.selection.createRange();
sel.text = "[" + selec + "]" + str + "[/" + selec + "]";
sel.collapse();
sel.select();
}
else
{
oField.focus(oField.caretPos);
// alert(oField.caretPos+"\n"+oField.value.length+"\n")
oField.focus(oField.value.length);
oField.caretPos = document.selection.createRange().duplicate();
var bidon = "%~%";
var orig = oField.value;
oField.caretPos.text = bidon;
var i = oField.value.search(bidon);
oField.value = orig.substr(0,i) + "[" + selec + "][/" + selec + "]" + orig.substr(i, oField.value.length);
pos = i + 2 + selec.length;
//placer(document.forms['news'].elements['newst'], pos);
var r = oField.createTextRange();
r.moveStart('character', pos);
r.collapse();
r.select();
}
}
}
</script>
Ici il m'affiche: --> [color='#FF0000']test[/color='#FF0000']
Page "Preview":
<? include('../BBCode.php'); ?>
BBCode.php:
// couleur
$t=str_replace("[/color] ", "</span>", $t);
$regCouleur="\[color= ?(([[:alpha:]]+)|(#[[:digit:][:alpha:]]{6})) ?\]";
$t=ereg_replace($regCouleur, "<span style=\"color: \\1\">", $t);
Affichage du paragraphe:
<? echo bbCode(html_entity_decode(stripslashes(affich($par1)))) ?>
Ici il m'affiche: --> test[/color=#FF0000]
Je connaît pas mal le language mais suis pas non plus hypra forte.
Merci pour votre aide! Je continue mes recherches !! 