fal91 | Bonjour
Je souhaite effectuer une barre de mise en forme pour une textarea (dans 1 Système de news) à la manière de ce forum . Mais je connais pas le javascript, voilà ce que j'ai trouvé :
Code :
- <html>
- <head>
- <title>Ajouter du texte au milieu d'un textarea</title>
- </head>
- <body>
- <form name="poster"
- onSubmit="alert('Script by iubito\nhttp://iubito.free.fr\niubito [at] asp-php [point] net');return false;">
- <p>Mise en forme du texte :
- <a href="javascript:AddText('','','');">URL</a>
- | <a href="javascript:AddText('[email]','','[/email]');">Email</a>
- | <a href="javascript:AddText('','','');">Gras</a>
- | <a href="javascript:AddText('','','');">Italique</a>
- | <a href="javascript:AddText('','','');">Souligné</a>...
- <br>
- Smileys :
- <a href="javascript:AddText('',':)','');">Content</a>
- | <a href="javascript:AddText('',':(','');">Pas content</a>
- | <a href="javascript:AddText('','8o)','');">Faire le clown</a>
- | <a href="javascript:AddText('',';-D','');">LOL</a>...
- </p>
- <script language="JavaScript" type="text/javascript">
- /*function storeCaret(text)
- { // voided
- }
- */
- function AddText(startTag,defaultText,endTag)
- {
- with(document.poster)
- {
- if (message.createTextRange)
- {
- var text;
- message.focus(message.caretPos);
- message.caretPos = document.selection.createRange().duplicate();
- if(message.caretPos.text.length>0)
- {
- //gère les espace de fin de sélection. Un double-click sélectionne le mot
- //+ un espace qu'on ne souhaite pas forcément...
- var sel = message.caretPos.text;
- var fin = '';
- while(sel.substring(sel.length-1, sel.length)==' ')
- {
- sel = sel.substring(0, sel.length-1)
- fin += ' ';
- }
- message.caretPos.text = startTag + sel + endTag + fin;
- }
- else
- message.caretPos.text = startTag+defaultText+endTag;
- }
- else message.value += startTag+defaultText+endTag;
- }
- }
- </script>
- <textarea
- rows="8"
- cols="30"
- name="message"
- wrap="virtual"
- onmouseover="this.focus();">
- Tape du texte ici,
- fais une sélection puis clique sur un lien,
- place ton curseur au beau milieu de ton texte,
- clique sur un lien... éclate-toi bien !
- </textarea><br>
- <input type="submit" name="soumettre" value="envoyer">
- </form>
- </body>
- </html>
|
Le problème est que lorsque l'on clique sur gras, cela ajoute juste les balises ouvrantes et fermantes. Je voudrai cela :
- si une sélection de texte est active, placer la 'balise' ouvrante (de la propriété cliquée) juste devant la sélection et la 'balise' fermante juste après le dernier caractère sélectionné.
- si il n'y a pas de sélection de texte, remonter le texte à l'envers depuis la position du curseur pour vérifier si il existe une 'balise' ouvrante de ce type non fermée. Si c'est le cas, insérer une 'balise' fermante, sinon insérer une 'balise' ouvrante.
Comme sur le forum hardware Merci pour votre aide ! |