Smilies in Formular einfügen

wenn du die function schreibst solltest du villeicht mal ne anderen var namen angeben
function smilie(w){...

dann:
document.form.beitrag.value+=w

mit smilie('test') aufrufen
 
Jo danke, dass mit dem Buchstaben anstatt nem Smilie hat schonmal funktioniert, werden da wohl doch nur irgendwelche Anführungszeichen fehlen. Ich bekomm aber trotz alle dem noch in der Statusleiste gezeigt das angeblich Fehler auf der Seite sind.

€dit: Sobald n Doppelpunkt ins Spiel kommt, wird nichts mehr ins Formular geschrieben.

€dit²: Wenn ich die Javascript Void Funktion weglasse und den onclick aufruf direkt in den <img> Tag schreibe, gibts auch keine Fehlermeldung mehr im Browser. Bleibt nur die Frage wo, welche Anführungszeichen hinkommen, damit ich Doppelpunkte in der Anweisung nutzen kann.
 
Zuletzt bearbeitet:
Code:
function image(:rolleyes:)
{
document.formular.beitrag.value = document.formular.beitrag.value + :rolleyes:;
}
</script>

Code:
<img src=/forum/smilies/icon3.gif onclick="image(':rolleyes:')" border=0>

Auch wenns eigentlich mit dem Doppelpunkt schon gehen sollte, geht aber nicht...
Is da oben noch irgendwas nich ganz richtig?
 
arg LOL!

nein so musst du das nicht machen
du musst den paramter nur beim funktionsaufruf verändern und nicht im ganzen script *rofl*

das hier:
function smilie(w){...
document.form.beitrag.value+=w

musst du überhaupt nicht verändern!!

wenn du smilie() aufrufst wird der parameter ja gesetzt

blub,->TRT
 
mhhh...

Hallo!

Habe die Diskussion aufmerksam verfolgt aber leider wurde es bisher immer so beschrieben, als ob die Smilies auf der gleichen Seite wie das Textarea-Feld seien.

Angenommen folgendes: ich habe 2 Dateien: eine Forumwrite-Datei, auf der man das Textarea-Feld findet und ein Link auf ein Popup-Fenster. In diesem Popup-Fenster kann man nun Smilies auswählen, die in der Forumwrite-Datei als Zeichen im Textarea-Feld eingefügt werden.
angenommen das Popup hieße "Fenster" und der Form-Name wäre "form" und das Textarea feld hieße "formText".
Wie mache ich das dann?

Die Antwort zu meiner obigen Frage, lässt sich das auch auf ein IFrame anwenden (das wäre natürlich noch besser).

Danke für 'ne Antwort
 
Vielleicht interessiert es ja einen. Ich habe mal einen Code gecodet, mit welchem es möglich ist, alle Smilies eines bestimmten Verzeichnisses auszulesen, diese Anzuzeigen, und in ein bestimmtes Element eures Formulars einzufügen (Beim Klick auf das Smilie). Beim ersetzten wird der BB-Cide automatisch durch den richtigen Smilie ersetzt:


PHP:
 <?php
 // Keine Variable umbenennen, nur die Werte davon anpassen:
 $smiliedir = "smilies"; // Verzeichnis, in welchem die Smilies liegen (ohne / zum Schluss)
 $form_name = "name"; (Name eures Formulars (im < form >-Tag)
 $textarea_name = "namet"; (Name des Teils, in welches die Smilies eingefügt werden sollen )
 
 // Nix mehr ändern !
 function smilies_into_array() {
 	global $smiliedir;
 	$dir=$smiliedir;
 	$open=opendir($dir);
 	$array=array();
 	$i=1;
 	while($file=readdir($open)) {
 		if ($file != "." && $file != "..") {
 			$neu=str_replace(".gif","",$file);
 			$replacecode=":".$neu.":";
 			$array[$replacecode][$i]=$file;
 			$i+=1;
 		}	
 	}
 	return $array;
 }
 
 $smilearray=smilies_into_array();
 
 function make_javascript() {
 	global $form_name;
 	global $textarea_name;
 	global $smilearray;
 	echo "<script language=\"javascript\" type=\"text/javascript\">";
 	echo "<!--";
 	foreach ($smilearray as $smilie_bb=>$newarray) {
 		foreach ($newarray as $functionnr=>$file) {
 			echo $functionnr;
 			echo '
 			function smilie'.$functionnr.'()
 			{
 		    document.'.$form_name.'.'.$textarea_name.'.value = document.'.$form_name.'.'.$textarea_name.'.value + "'.$smilie_bb.'";
 			}';
 		}	
 	}
 	echo "//-->";
 	echo "</script>";
 }
 
 function show_smilies() {
 	global $smilearray;
 	global $smiliedir;
 	foreach ($smilearray as $smilie_bb=>$newarray) {
 		foreach ($newarray as $functionnr=>$file) {
 			echo "<img border=\"0\" src=\"".$smiliedir."/".$file."\" onClick=\"smilie".$functionnr."()\">";
 		}	
 	}
 }
 
 function replace_bbcode($textarea) {
 	global $smilearray;
 	global $smiliedir;
 	foreach ($smilearray as $smilie_bb=>$newarray) {
 		foreach ($newarray as $functionnr=>$file) {
 		    $textarea=str_replace($smilie_bb, "<img src=\"".$smiliedir."/".$file."\">", $textarea);
 		}	
 	}
 	return $textarea;
 }
 ?>

der beispielcode dazu würde so aussehen (Formular mit einem Textteil, in welches die Smilie beim Klick darauf eingefügt werden:)

PHP:
 <?php
 include("functions.inc.php");
 echo "<html><head>";
 make_javascript();
 echo "</head><body>";
 
 if ($_GET["action"]=="senden") {
 	echo replace_bbcode($_POST["namet"]);
 }
 else {
 	echo "<form action=\"".(basename($PHP_SELF))."?action=senden\" name=\"name\" method=\"post\">";
 	echo "<br><br>";
 	echo "<textarea name=\"namet\" rows=\"20\" cols=\"20\"></textarea>";
 	show_smilies();
 	echo "<input name=\"senden\" type=\"submit\"></form>";
 }
 
 ?>

Ich hoffe, das hilft hier manchen Leuten, oder jmd hat schon sowas gesucht.
MFG
 
Hallo
na wenn der Thread ja schon herausgegraben wurde, hier noch eine (zwei) kurze Fragen von mir:

1. Ich habe das mit den Smilyes auch gemacht. Im head steht:

HTML:
function Smiley(Zeichen)
	{
         window.document.gaestebuch.text.value =
         window.document.gaestebuch.text.value + Zeichen;
         }

und für jedes Smiley:

HTML:
<a href="#" class="grafik"><img src="smileys/regular_smile.gif" width="15" height="15" border="0" onClick="javascript:Smiley(':) ') "></a>

Das funktioniert auch schon ganz gut. Jetzt möchte ich aber die Smileys in einem separaten Popup anzeigen. Wie muss ich dann die Funktion definieren?
Zur Info: gaestebuch in der funktion ist der Name des Formulares, text der Name der Textarea.

2. Gehört zwar nicht zum Thema, aber um kein anderes eröffnen zu müssen:
HTML:
<a href="#" onClick="window.open('smileys.php','smileys','width=200px','height=150px'); ";>Smileys</a>

Warum wird das Popup nicht 200px breit und 150px hoch?...also die 200px breit werden noch eingehalten, das Fenster ist aber viel höher, mindestens 400-500px. Woran liegt das?

danke und gruss
 

Neue Beiträge

Zurück