Schriftfarbe Rich Text

Shooter2k

Erfahrenes Mitglied
Hallo Forum,

ich habe ein Problem.
Ich möchte gerne auschließlich 2 unterschiedliche Schriftfarben als Richtext in einem Formular schreiben.

Ich habe ein Formular mit einer Textarea und darunter 2 Tabellen mit der gewünschten Textfarbe als Tabellenhintergrund. Wenn man nun auf den geschriebenen Text markiert und danach auf die Tabelle mit der Farbe klickt sollte die Schriftfarbe wechseln. Beim abschicken des Formulars der HTML Code dazu erzeugt werden.

Hier mein Formular mit den Tabellen:

Code:
<form id="richtext" name="formular" method="post" action="<? php_self ?>">
  <textarea name="textarea" cols="60" rows="5"></textarea>
</form>
<table width="40" border="0" cellspacing="0" cellpadding="0">
  <tr>
    <td>
	<!--Farbe blau-->
	<table width="20" border="0" cellpadding="0" cellspacing="0" bgcolor="#CCFF00">
      <tr>
        <td>&nbsp;</td>
      </tr>
    </table>
	
	
	</td>
    <td>
	<!--Farbe gelb-->
	<table width="20" border="0" cellpadding="0" cellspacing="0" bgcolor="#0033FF">
      <tr>
        <td>&nbsp;</td>
      </tr>
    </table>
	
	
	</td>
  </tr>
</table>

Kann mir jemand zeigen wie ich dieses Problem mit Javascript lösen kann ?
Ich wäre sehr dankbar dafür.

Mit freundlichen Grüßen
Henry
 
Hallo,...

Die Farbe kannst du ändern per
Code:
document.formular.textarea.style.color='farbwert';

Das mit dem HTML-Code für die Farbe solltest du besser mit PHP klären..... du wirst ja vielleicht etwaigen Code aus dem Text filtern wollen...da wäre dieser dann auch betroffen.

Stattdessen kannst du bspw. ein verstecktes Formularfeld nehmen(nennen wir es mal "farbe")...und seinen Wert ändern:
Code:
document.formular.farbe.value='farbwert';
...mit PHP ermittelst du dann, welche Farbe gewählt wurde und kannst problemlos den HTML-Code dafür erzeugen.
 
Danke für deine Hilfe. Ich habe eigentlich schon einen fertigen RT Editor aber ich möchte an ihm was ändern. Und zwar statt die Farbpalette als iframe zu nutzen es als Popup umzuschreiben. Eigentlich sind es nur kleine änderungen , aber es gelingt mir einfach nicht.

Ich poste hier einfach mal ein paar codeschnipsel, die wichtig sind:
Die Farbpalette palette.htm ( bisher als iframe / soll Popup) :
Code:
	<script language="JavaScript" type="text/javascript">
	<!--
	function selectColor(color) {
		self.parent.setColor(color);
	}
	
	function InitColorPalette() {
		if (document.getElementsByTagName)
			var x = document.getElementsByTagName('TD');
		else if (document.all)
			var x = document.all.tags('TD');
		for (var i=0; i < x.length; i++) {
			x[i].onmouseover = over;
			x[i].onmouseout = out;
			x[i].onclick = click;
		}
	}
	
	function over() {
		this.style.border = '1px dotted white';
	}
	
	function out() {
		this.style.border = '1px solid gray';
	}
	
	function click() {
		selectColor(this.id);
	}
	//-->
	</script>

Darunter die Farben in einer Tabelle:

Code:
<body bgcolor="white" onLoad="InitColorPalette()" leftmargin="0" rightmargin="0" marginwidth="0" marginheight="0" topmargin="0" bottommargin="0">
<table width="150" height="100" cellpadding="0" cellspacing="1" border="1" align="center">
	<tr>
		<td id="#FFFFFF" bgcolor="#FFFFFF" width="10" height="10"><img width="1" height="1"></td>
		<td id="#FFCCCC" bgcolor="#FFCCCC" width="10" height="10"><img width="1" height="1"></td>
		<td id="#FFCC99" bgcolor="#FFCC99" width="10" height="10"><img width="1" height="1"></td>
...
...

..


Dann das Formular:

<form name="RTEDemo" action="<?=$_SERVER["PHP_SELF"]?>" method="post" onSubmit="return submitForm();">

Ich glaube man müsste nur statt self.parent. einfach window.opener oder sowas in der art schreiber aber ich bin nicht so gut in javascript. Fällt jemanden dazu vieleicht noch was ein ?

Ich habe auch mal den kompletten richtext editor hochgeladen:
Richtext Editor (ZIP)

Danke für die Hilfe
 
Shooter2k hat gesagt.:
Ich glaube man müsste nur statt self.parent. einfach window.opener oder sowas in der art schreiber aber ich bin nicht so gut in javascript.

Ich hab mir den Editor zwar noch nicht angeschaut... aber deine Idee sollte eigentlich hinhauen:
Code:
 window.opener.setColor(color);
....hattest du es schon probiert?
Wenn es nicht hinhaut, sag Bescheid, dann guck ich mal in den Editor rein ;)
 
Danke aber leider funktioniert es nicht. Ich glaube das ich nicht alle zusammenhänge sehe. Könntest du dir die Zeit nehmen und mal in die zipdatei reinsehen? Das ist mir wirklich sehr wichtig ich komme einfach nicht weiter.

gruß
henry
 
Folgende Änderungen sollten es bringen:

Code:
//richtext.js
function dlgColorPalette(rte, command) {
	//function to display or hide color palettes
	setRange(rte);
window.open('palette.htm','palette','width=160,height=120');
	parent.command = command;
	currentRTE = rte;
}	

//palette.htm
function selectColor(color) {
		opener.setColor(color);
		self.close();
}
 
Zurück