comment insérer du code autour du text selectioné?

Eléphanteau du PHP | 13 Messages

08 févr. 2007, 01:18

voici mon dilemme;

J'aimerais pouvoir sélectionner une portion de text dans le textarea, et ensuite pouvoir cliquer sur un bouton afin que le text selectionné soit ensuite entourré par le code [ b ] et [ /b ] dans le textarea. Comment-puis-je arriver à faire cela?

Est-ce que quelqu'un pourrait m'aider? Un exemple m'aiderais vachement gros à comprendre le concept.

Merci!

Avatar du membre
Modérateur PHPfrance
Modérateur PHPfrance | 10684 Messages

08 févr. 2007, 10:36

Une petite recherche sur le forum du mot clé "bbcode" devrait t'apporter une tripoté de résultats, d'exemples, et d'explications sur le sujet :)
Ce n'est pas en améliorant la bougie que l'on a inventé l'ampoule...

ViPHP
ViPHP | 928 Messages

08 févr. 2007, 12:50

Bonjour,
essaie avec ce code :

Code : Tout sélectionner

/* ** Insertion de texte dans un textarea ** ----- ** id :: ID du textarea ** open :: Ouverture ** defaultText :: Texte central ** close :: Fermeture */ function launch_insert_text(id, open, defaultText, close) { var txtarea = document.getElementById(id); txtarea.focus(); // IE support if (document.selection) { insert_ie(open, defaultText, close, txtarea); } // MOZILLA support else if (txtarea.selectionStart || txtarea.selectionStart == '0') { insert_mozilla(open, defaultText, close, txtarea); } else { txtarea.value += open + defaultText + close; } } function insert_ie(open, defaultText, close, txtarea) { if (txtarea.createTextRange) { txtarea.focus(txtarea.caretPos); txtarea.caretPos = document.selection.createRange().duplicate(); if (txtarea.caretPos.text.length > 0 && open != '') { defaultText = txtarea.caretPos.text; } txtarea.caretPos.text = open + defaultText + close; } } function insert_mozilla(open, defaultText, close, txtarea) { var x = txtarea.scrollTop; var selStart = txtarea.selectionStart; var selEnd = txtarea.selectionEnd; var selLength = selEnd - selStart; var textStart = txtarea.value.substring(0,selStart); var textEnd = txtarea.value.substring(selEnd, txtarea.textLength); if (selLength != 0 && open != '') { defaultText = (txtarea.value).substring(selStart, selEnd) } if (x == 0 && (txtarea.textLength == selStart)) { x = txtarea.textLength + 200; } txtarea.value = textStart + open + defaultText + close + textEnd; var txt = open + defaultText + close; var cur_pos = selStart + txt.length; txtarea.scrollTop = x; if (!(selLength != 0 && open != '')) { txtarea.selectionStart = selStart + open.length; txtarea.selectionEnd = txtarea.selectionStart + defaultText.length; } else { txtarea.selectionStart = selStart + open.length; txtarea.selectionEnd = selEnd + open.length; } }
pour l'utilisation :

Code : Tout sélectionner

<textarea id="id_du_textarea"></textarea><br /> <input type="button" value="Gras" onclick="launch_insert_text('id_du_textarea', '[b]', 'Texte par defaut', '[/b]')" />

Eléphanteau du PHP | 13 Messages

08 févr. 2007, 23:58

Oh mes très grands remerciements Genova! Je vais pouvoir étudier ça, merci!

Modérateur PHPfrance
Modérateur PHPfrance | 7636 Messages

09 févr. 2007, 00:12

Oh mes très grands remerciements Genova! Je vais pouvoir étudier ça, merci!
Même si Ryle ne t'a pas donné de code il a tout de même répondu... :roll:

/!\ Avant de poster se documenter et rechercher.
Qui ne sait pas rendre un service n'a pas le droit d'en demander.
MaBrute