Hallo,

Ik heb op internet een scriptje gevonden dat als je je tekst in een textarea zet dat je het dan ook direct in een DIV kunt zien. Maar ik wil er een preview van maken met php ubbcodes erin ik bedoel zegmaar:

[b]dikgedrukt[/b][i]schuin[/i]

en dat er dan in de div komt te staan
dikgedruktschuin

Ik heb dit script:
<script language="JavaScript" type="text/javascript">
function preview(id1, id2){
	  		var NewText = document.getElementById(id1).value;
	  		splitText = NewText;
	  		var DivElement = document.getElementById(id2);
	  		DivElement.innerHTML = splitText;
}
</script>


en bij het invoeren:
<textarea name="bericht_full" cols="60" rows="8" id="bericht_full"  onkeyup="preview('bericht_full', 'bericht_full-preview');" style="background:#FFFFFF;"></textarea>


en bij het voorbeeld:
<div id="bericht_full-preview"></div>


Hopelijk kan iemand helpen, alvast bedankt
En wat is de vraag of het probleem?
Ik wil UBB (vanuit PHP) in m'n voorbeeld hebben.
Als ik zeg maar
[b]Tekst[/b]
intyp in mijn textarea dat je dan in het voorbeeldje ziet Tekst.
Maar je wilt wel UBB opslaan in je database? Wat is je bezwaar dan om een tinyMCE/FCKEditor te gebruiken? Die kan je helemaal strippen als je wilt.
Dat die met html werkt misschien? HTML in een DB zegt men hier toch steeds dat het "not done" is?
En het argument is dan? Dat je geen opmaak in je database wilt hebben. Maar of het nu UBB of HTML is maakt dan niet echt veel meer uit.
Maar alsnog weet ik niet of dat zijn argument is.
Om die UBB live te previewen zal hij het toch op de een of andere manier naar HTML moeten omzetten.
Ik denk dat hij bedoelt dat als je de UBB code indrukt dat hij het direct via een java script laat zien zonder eerst te posten.
Als het blijft bij een paar simpele tags zoals bold italic en misschien zelfs een enkele smilie dan kan je hier direct javascript voor gebruiken.


<script type="text/javascript">
function ubbcode()
{
	var tekst = document.getElementById('input').value;
	var codes = new Array
	(
	 /\[b\](.*?)\[\/b\]/ig,
	 /\[i\](.*?)\[\/i\]/ig,
	 /\[u\](.*?)\[\/u\]/ig
	);
	var vervang = new Array
	(
	 "<b>$1</b>",
	 "<i>$1</i>",
	 "<u>$1</u>"
	);
	
	for(var i = 0; i < codes.length; i++)
	{
		tekst = tekst.replace(codes[i], vervang[i]);
	}
	
	document.getElementById('voorbeeld').innerHTML = tekst;
}
</script>

<textarea rows="10" cols="50" onkeyup="ubbcode();" id="input"></textarea>

<div id="voorbeeld"></div>



Wanneer je echter (zoals ik) 200 smilies in een database heb die je wilt vervangen dan moet je dit dus niet allemaal in javascript zetten. Ajax bied hier een oplossing voor in combinatie met php.
Dat is ook een manier, een beetje zoals Hyves het doet. Naast het veld waar je typt meteen een preview maken. Maar om dan onkeyup elke keer een AJAX requeste te doen lijkt me een beetje te veel van het goede?
WillemJan Z schreef op 11.06.2009 07:27
Dat is ook een manier, een beetje zoals Hyves het doet. Naast het veld waar je typt meteen een preview maken. Maar om dan onkeyup elke keer een AJAX requeste te doen lijkt me een beetje te veel van het goede?


idd hyves heeft het ook
WillemJan Z schreef op 11.06.2009 07:27
Dat is ook een manier, een beetje zoals Hyves het doet. Naast het veld waar je typt meteen een preview maken. Maar om dan onkeyup elke keer een AJAX requeste te doen lijkt me een beetje te veel van het goede?


Als je met ajax gaat werken vind ik dat je dat 2 divs moet maken naast elkaar. Eentje met de textarea erin en de andere met de preview met display op none. Knop eronder met submit en preview en wanneer er op de preview knop word gedrukt.. de textarea div: display:none zetten en de preview div: display:block maken.
Ajax request maken en voila je hebt een mooie preview

Reageren