Smilies auf Klick in Textfeld

Ma-Ju

Grünschnabel
Hi!

Ich möchte Smilies in ein Textfeld per Klick übertragen. Dazu hab ich eine JS Funktion erstellt. Eigentlich klappt das auch, nur will ich auch den Namen für das Textfeld als 2. Parameter übertragen, da ich viele Textfelder habe. Und ich will nicht für jedes Feld eine extra Funktion erstellen.

Klick-Funktion:
PHP:
function click(smilie, textname) {
    document.form.textname.value += smilie + " ";
	document.form.textname.focus();
}

PHP-Code:
*edit*
unwichtiger PHP-Code. ;)

Das ist eher nebensächlich. Fakt ist, dass in der Statuszeile z.B. "javascript:click(:D, text)" angezeigt wird, wenn man über das Smilie geht.
Jetzt noch die wichtigsten Befehle im Template:

PHP:
<form name="form" action="?$config[switchvar]=infobase&$config[contentvar]=ins_newscomment&id=$_GET[id]" method="post">
// ...
<textarea name="text" cols="50" rows="12"></textarea>

Noch eine Frage: Gilt in der JS-Funktion das "form" für den Formularnamen oder ist es ein Schlüsselwort für das Formular? Ich will nämlich wissen, ob ich unbedingt den "name"-Parameter bei <form> angeben muss.

Ich hoffe, das war deutlich genug und mir kann jemand helfen! :)
 
Zuletzt bearbeitet:
Javascript:
function click(smilie, textname) {
 document.getElementsByName(textname)[0].value += smilie + " ";
 document.getElementsByName(textname)[0].focus();
 }
Und die Korrekte Weise Formulare anzusprechen ist entsprechend "document.getElementsByTagName('form')[i]" (das nur so am Rande).

Du musst nicht unbedigt ein name-Attribut (Parameter sind was anders) angeben. Das name-Attribut ist in Formularen sogar laut W3C "depreciated".
Du kannst das Formular auch über die id mit document.getElementsById, ober dass Array mit allen Formularen "document.getElementsByTagName('form')[i]" bzw. "document.forms[i]" mit der ensprechenden Nummer "i", also 0, 1, 14 oder was auch immer, ansprechen. Die DOM-Methoden (getElementByWasAuchImmer) funktionieren in älteren Browser nicht, wewegen leider in der Praxis immernoch "document.forms['NameDesFormulars']" bzw. "document.forms[i]" verwendet wird, obwohl so alte Browser-Kisten de facto nicht mehr anzutreffen sind und man sich eigentlich an den richtigen Standard halten könnte.

Zum Thema php im Javascript-Forum möchte ich dich noch bitten den eben verlinkten Post zu lesen und deinen Beitrag dahingehend zu editieren, bevor wir dir helfen. Danke!
 
Zuletzt bearbeitet:
Dann nochmal Danke, dass du dich an die Statuten dieses Forums hälst. Wenn dir das kindisch vorkommt, bedenke, dass du etwas von uns willst, dich also an unsere Regeln halten solltest und dass nicht jeder im Javascript-Forum weiß, wie er php-Code zu lesen hat. Man kann durchaus Javascript beherrschen ohne den geringsten Schimmer von php zu haben.

Wenn du bei deinen Links "onclick" statt "href='javascript....'" verwendest wird das javascript:.... nicht mehr angezeigt. Das sieht dann so aus:
HTML:
<a href="#" onclick="click('blubb','bla'); return false">Ich bin ein Link</a>

Das "form" ist eigentlich sowohl ein Schlüsselwort als es auch in bestimmtem Kontext als Name verwendet werden kann. Da das etwas kompliziert ist, empfielt es sich einfach seine Formulare nicht "form" zu nennen und ihnen auch keine id="form" zu geben. Das sollte bei ca. 10^11 möglichen Kombinationen kein Problem sein.

Ansonsten weiß ich nicht, wie ich dir weiter helfen soll, was willst du denn noch wissen? Ich habe dir gesagt, wie du das mit den Namen für deine Textfelder hinbekommst, du weißt, wie das "javascript:..." nicht mehr in deiner Statusleiste erscheint und bist jetzt einigermaßen über das Form-Zeugs informiert.
 
Zuletzt bearbeitet:
Ist ja kein Problem. ;)
So richtig funktionieren will das ganze nur immer noch nicht.

PHP:
<a href="#" onClick="click(':D', 'text'); return false"><img src="images/smilies/biggrin.gif" border="0" alt=" zum Text hinzufügen" title=":D zum Text hinzufügen"></a></td>

PHP:
<td width="100">Dein Text: </td><td style="height:32px;"><textarea name="text" cols="50" rows="12"></textarea></td>

Die JS-Funktion:
PHP:
function click(smilie, textname) { 
    document.getElementsByName(textname)[0].value += smilie + " ";     
    document.getElementsByName(textname)[0].focus(); 
}

Aber in das Textfeld übertragt er das immer noch nicht.
 
Achso, ja das Wort "click" darf nicht als Funktionsname in Javascript verwendet werden, weil es schon eine Funktion Names "click" gibt. Benenne das ganz um und es sollte gehen.
 

Neue Beiträge

Zurück