Smilie-Code in Textarea per klick

Trash

Erfahrenes Mitglied
Hallo,
man sieht ja immer öfter dieses nette Feature wenn man auf einen Smilie klickt ist der code des Smilies dann im Textarea Feld ich hab das auch mal probiert nur es funktioniert nicht, hier ein Code auszug..

Ganz oben:
PHP:
<script language="JavaScript">
<!--
function seticon(Zeichen) {
   document.action.text.value =
   document.action.text.value + Zeichen;
}
//-->
</script>

Danach weiter unten:
PHP:
 echo("    <textarea name='Text' wrap='virtualy' rows='10' cols='40'></textarea>\n");

Danach:
PHP:
echo("<a href=\"javascript:seticon('<img src=gif/flag_brazil.gif alt=BRA border=0>')\"><img src=\"gif/flag_brazil.gif\" alt=\"BRA\" border=\"0\"></a>\n");

Lasst euch von dem PHP-Code drumrum nicht irretieren...
 
PHP:
<script language="JavaScript">
<!--
function seticon(Zeichen) {
    document.action.text.value = document.action.text.value + Zeichen;
}
//-->
</script>
ist nicht sinnvoll, da du durch den Zeilenumbruch jedesmal von der Script-Engine ein Semikolon an's Zeilenende gepackt bekommst und dadurch 2 getrennte Anweisungen statt einer hast.

Sinnvoller ist daher:
PHP:
<script type="text/javascript" language="JavaScript">
<!--
function seticon(Zeichen) {
    document.action.text.value = document.action.text.value + Zeichen;
}
//-->
</script>
aber folgende Schreibweise ist etwas kürzer und dennoch gleichbedeutend:
PHP:
<script type="text/javascript" language="JavaScript">
<!--
function seticon(Zeichen) {
    document.action.text.value += Zeichen;
}
//-->
</script>
hth,
Geist
 
Zuletzt bearbeitet:
Nein, sorry die hat mir komischerweise die Opera eben untergemogelt, weiß auch nicht wo da der Haken dran war, hab's aber eben noch modifiziert. :)

Geist
 
hmm, ich hab jetzt deine 1. Schreibweise benutzt und es geht trotzdem nicht ...irgendwas stimmt an meinem Code nicht, hier mein ein etwas längerer Ausschnitt: Sorry dafür:

PHP:
<script type="text/javascript" language="JavaScript">
<!--
function seticon(Zeichen) {
    document.action.text.value = document.action.text.value + Zeichen;
}
//-->
</script>
<?
  if(login_right($ID,$Pass)&&rightfornews($ID))
  {
      switch($todo)
      {
          case add:
               if($formaction=="Hinzufügen")
               {
                   if($Titel=="")
                   {
                       TableMessage("Bitte geben sie ein Titel für die News an","Fehlende Eingabe");
                   }
                   else
                   {
                       if($Text=="")
                       {
                           TableMessage("Bitte geben sie ein Text für die News an","Fehlende Eingabe");
                       }
                       else
                       {
                           $Datum=date("Y-m-d H:i:s");
                           mysql_query("INSERT INTO news (Titel,Text,Datum,Poster) VALUES('$Titel','$Text','$Datum','$ID')");
                           TableMessage("News wurde hinzugefügt","News hinzufügen");
                       }
                   }
               }
               else
               {
                   echo("<table border='0' cellpadding='0' cellspacing='1' align='center' bgcolor='#000000'>\n");
                   echo(" <form action='".$PHP_SELF."' method='post'>\n");
                   echo("  <tr>\n");
                   echo("   <td class='InhaltTop' colspan='2'>\n");
                   echo("    <p align='center'>News hinzufügen</p>");
                   echo("   </td>\n");
                   echo("  </tr>\n");
                   echo("  <tr class='Inhalt'>\n");
                   echo("   <td>\n");
                   echo("    Titel\n");
                   echo("   </td>\n");
                   echo("   <td>\n");
                   echo("    <input type='text' size='40' name='Titel'>\n");
                   echo("   </td>\n");
                   echo("  </tr>\n");
                   echo("  <tr class='Inhalt'>\n");
                   echo("   <td>\n");
                   echo("    Text\n");
                   echo("   </td>\n");
                   echo("   <td>\n");
                   echo("    <textarea name='Text' wrap='virtualy' rows='10' cols='40'></textarea>\n");
                   echo("   </td>\n");
                   echo("  </tr>\n");
                   echo("  <tr>\n");
                   echo("   <td class='InhaltBottom' colspan='2' align='center'>\n");
$durchschleifen=array("ID","Pass","section","site","todo");
for($i=0;$i<count($durchschleifen);$i++)
{
echo("<input type='hidden' name='".$durchschleifen[$i]."' value='".$$durchschleifen[$i]."'>\n");
}
echo("<input type='submit' name='formaction' value='Hinzufügen'>\n");
echo("<input type='reset' value='Zurücksetzen'>\n");
echo("   </td>\n");
echo("  </tr>\n");
echo(" </form>\n");
echo("</table>\n");
//break-Hinweis
echo("<p>\n");
echo("<table border='0' cellpadding='0' cellspacing='1' align='center' bgcolor='#000000'>\n");
echo("  <tr>\n");
echo("   <td class='InhaltBottom' colspan='2' align='center'>\n");
echo("Um einen [more]-Link zu erzeugen, setzt bitte den [break] Befehl an die Stelle an der die News unterbrochen werden soll.\n");
echo("   </td>\n");
echo("  </tr>\n");
echo("</table>\n");
//Flaggen-Hnweis
echo("<p>\n");
echo("<table border='0' cellpadding='0' cellspacing='1' align='center' bgcolor='#000000'>\n");
echo("  <tr>\n");
echo("   <td class='InhaltBottom' colspan='2' align='center'>\n");
echo("<a href=\"javascript:seticon('<img src=gif/flag_norwegen.gif alt=NOR border=0>')\"><img src=\"gif/flag_norwegen.gif\" alt=\"NOR\" border=\"0\"></a>\n");
echo("<a href=\"javascript:seticon('<img src=gif/flag_usa.gif alt=USA border=0>')\"><img src=\"gif/flag_usa.gif\" alt=\"USA\" border=\"0\"></a>\n");
echo("<a href=\"javascript:seticon('<img src=gif/flag_sweden.gif alt=SWE border=0>')\"><img src=\"gif/flag_sweden.gif\" alt=\"SWE\" border=\"0\"></a>\n");
echo("<a href=\"javascript:seticon('<img src=gif/flag_brazil.gif alt=BRA border=0>')\"><img src=\"gif/flag_brazil.gif\" alt=\"BRA\" border=\"0\"></a>\n");
echo("   </td>\n");
echo("  </tr>\n");
echo("</table>\n");
//Flaggen-Ende
}
break;
 
So vielleicht?
echo("<a href=javascript:seticon(\"<img src='gif/flag_norwegen.gif' alt='NOR' border='0'>\")><img src=\"gif/flag_norwegen.gif\" alt=\"NOR\" border=\"0\"></a>\n");
 
Trash, es ist einfacher das ganze zu beurteilen, wenn du

1.
sagst, was es für eine Fehlermeldung gibt, denn "geht nicht" ist ja immer sinnlos...

2.
einfach im letztendlich beim Clienten gelandeten Dokument einfach schaust, welcher Quelltext in einer beliebigen Zeile, die einen Aufruf des JavaScriptes erzwingt, dort vorherrscht und diesen anscheinend fehlerhaften hier mal postest.

Geist
 
Zuletzt bearbeitet:
Sicher?
Man kann das auch gerne so einstellen, dass keine Fehlermeldungen aufpoppen, der IE ist im Grundzustand so konfiguriert...

Ansonsten gilt noch immer:
Bitte einfach mal aus dem Quellcode einer solchen Seite, wenn sie denn schon geparst wurde (!) eine Zeile posten, die einen JavaScript-Aufruf enthält, bspw. sollte folgende Zeile im PHP-Script ja eine ausgeben, die das macht:
PHP:
echo("<a href=\"java script:seticon('<img src=gif/flag_brazil.gif alt=BRA border=0>')\"><img src=\"gif/flag_brazil.gif\" alt=\"BRA\" border=\"0\"></a>\n");
Geist
 
PHP:
<script type="text/javascript" language="JavaScript">
<!--
function seticon(Zeichen) {
    document.action.Text.value = document.action.Text.value + Zeichen;
}
//-->
</script>

die javaScript funktion steht nicht im Header, muss sie das evtl. ?
beides stammt aus der geparsten Datei.

PHP:
<a href="javascript:seticon('<img src=gif/flag_norwegen.gif alt=NOR border=0>')"><img src="gif/flag_norwegen.gif" alt="NOR" border="0"></a>

document.action.Text.value

"Text" schreib ich gross weil meine textarea den namen "Text" hat muss ich denn sonst bei dem obigen Befehl noch etwas anpassen `?

UPDATE:
Ich habe gerade von einem Freund erfahren das bei ihm soetwas kommt:
Laufzeitfehler Zeile 305 document.action.Text ist null oder kein Objekt.
Wie bekomme ich denn das nun wieder weg und wieso zeigt mein IE das nicht an kann ich das nicht irgendwo einstellen ?
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück