Rechercher : dans
Par :

Javascript, php et textarea...

Dernière réponse le 20 aoû 2008 à 20:04:58 jeune prog, le 19 jun 2004 à 18:39:55 
 Signaler ce message aux modérateurs

Bonjour à tous,

J'ai un problème avec se code:

<html>
<head>
<title>Ajouter du texte au milieu d'un textarea</title>
</head>
<body>
<form name="poster" method="POST" action="ee.php" onSubmit="">
<p>Mise en forme du texte :
   <a href="javascript:AddText('[url]','URL','[/url]');">URL</a>
   | <a href="javascript:AddText('[email]','email@email.fr','[/email]');">Email</a>
   | <a href="javascript:AddText('[b]','Texte en gras','[/b]');">Gras</a>
   | <a href="javascript:AddText('[i]','Texte en italique','[/i]');">Italique</a>
   | <a href="javascript:AddText('[u]','Texte souligné','[/u]');">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) 
{
 if (document.poster.message.createTextRange) 
 {
  var text;
  document.poster.message.focus(document.poster.message.caretPos);
  document.poster.message.caretPos = document.selection.createRange().duplicate();
  if(document.poster.message.caretPos.text.length>0)
  {
   document.poster.message.caretPos.text = startTag + document.poster.message.caretPos.text + endTag;
  }
  else
  {
   document.poster.message.caretPos.text = startTag+defaultText+endTag;
  }
 }
 else document.poster.message.value += startTag+defaultText+endTag;
}
</script>

<textarea
   rows='8'
   cols='30'
   name=message
   wrap=virtual
   onmouseover="this.focus();"
   onkeyup="javascript:storeCaret(this);"
   onclick="javascript:storeCaret(this);"
   onchange="javascript:storeCaret(this);">
</textarea><br>
<input type="submit" name="soumettre" value="envoyer">
</form>
</body>
</html>

<?

$test=$_POST['message'];

print("$test"); 

?>


Il marche super bien,

Seulement comment puis-je faire pour que le naviguateur interprete les balises quand je clique mettons sur gras:

il m'ecrit sa:

[b]gras[/b]

Se qui est logique car c'est se qui est entrer dans le textarea mais comment puis-je le faire interpreter svp?

Merci à tous...

Meilleures réponses pour « Javascript, php et textarea... » dans :
Télécharger PSPad VoirPSPad est un excellent éditeur de texte. Il est utile pour travailler sur du simple texte, mais aussi sur du HTML, CSS, Javascript, php ou autres langages de programmation (C++, Java, Python...). Les fonctionnalités sont impressionnantes: ...
Javascript - l'objet Array VoirLes particularités de l'objet Array L'objet Array est un objet du noyau Javascript permettant de créer et de manipuler des tableaux. Voici la syntaxe à utiliser pour créer une variable tableau : var x = new Array(element1[, element2, ...]); Si...
Javascript - Implantation du code VoirA quel emplacement insérer le Javascript dans votre page HTML Il existe plusieurs façons d'inclure du JavaScript dans une page HTML : Grâce à la balise En mettant le code dans un fichier Grâce aux événements Dans la balise...
Les formulaires HTML VoirIntérêt d'un formulaire Les formulaires interactifs permettent aux auteurs de pages Web de doter leur page web d'éléments interactifs permettant par exemple un dialogue avec les internaute, à la manière des coupons-réponse présents dans certains...

1

esox_ch, le 19 jun 2004 à 19:09:24

Je suis pas sur d'avoir capter. Mais si c ce que je pensse, il te suffit pas de faire un
str_replace("[","<",$test);
str_replace("]",">",$test);
?

Esox
Eternel Questionneur. Seul et Unique membre de la : SPdLM
=> Société Protectrice des Langages Maltraités

Répondre à esox_ch

2

Ryle, le 7 aoû 2004 à 22:57:42
  • +1

La solution d'esox_ch fonctionne, mais est selon moi un peu dangereuse dans la mesure ou tu vas remplacer tous les crochets... je te sugère plutôt la fonction php preg_replace() qui fait ça très bien. Voilà la fonction que j'utilise, elle prend ton message initial ($test) en argument et renvoi le texte transformé, il ne reste plus qu'à l'afficher :)

function parseTexte($text) {

	$bbcode= array (
		"/\[b\](.+?)\[\/b\]/si",
		"/\[i\](.+?)\[\/i\]/si",
		"/\[u\](.+?)\[\/u\]/si",
		"/\[img\](.+?)\[\/img\]/si",
		"/\[url=(.+?)\](.+?)\[\/url\]/si"
	);

	$htmlcode= array (
		"<b>$1</b>",
		"<i>$1</i>",
		"<u>$1</u>",
		"<img src=\"$1\" border=\"0\">",
		"<a href=\"$1\" target=\"_blank\">$2</a>"
	);

	$text = preg_replace($bbcode,$htmlcode,$text);
	return $text;
}

Répondre à Ryle

3

corto, le 29 aoû 2007 à 21:10:57

Super!
Une question encore : sur les interface d'édition comme celles de phpBB on peut sélectionner le texte, cliquer sur un bouton, et les balises bb s'affichent toutes seules.
Il y a moyen de faire ça sans javascript?

Configuration: Windows XP
Internet Explorer 6.0

Répondre à corto

4

ozie, le 30 mai 2008 à 19:28:49

Oui sa peux mais comme toi je cherche

Répondre à ozie

5

 frodon, le 20 aoû 2008 à 20:04:58

Pour imiter phpBB et mettre en gras la selection, on peut le faire peut-etre avec quelque chose comme ca:

javascript:AddText('[b]',(txtarea.value).substring(txtarea.s­electionStart,
txtarea.selectionEnd),'/b');

Répondre à frodon