[Javascript] Textarea verändern

Von Gestern

Cadet 3rd Year
Dabei seit
Nov. 2004
Beiträge
37
Ich habe Probleme mit einer Javascript-Funktion.
Sie soll "name" zu dem aktuellen Text in der Textarea "id = area" hinzufügen
(am besten an der aktuellen Cursor-Position).

Firefox allerdings schreibt über den schon vorhandenen Text.

Hilfe jeglicher Art wäre super nett.

function setsmilietext(name)
{
if (document.getElementById)
{
document.getElementById("area").innerHTML = document.getElementById.("area").innerHTML + name;
}
else if (document.all)
{
document.all.area.innerHTML = document.all.area.innerHTML + name;
}
else if (document.layers)
{
document.layers.area.innerHTML = document.layers.area.innerHTML + name;
}
document.formular.area.focus();
}
 
Mit document.formular.element.value hab ichs auch schon probiert, aber dabei überschreibt er den bisherigen Inhalt der Textarea.

Aber trotzdem danke;)

ps. es sollte im prinzip genauso funktionieren wie beim reinklicken von Smilies in diesem Forum
 
also ich würds so schreiben, sollte sowohl IE als auch Firefox keine Probleme mit haben:

Code:
function setsmilietext(smiliestring) {
		
 var oldText = document.getElementById("area").value;
 var newText = oldText + smiliestring;
 document.getElementById("area").innerHTML = newText;
		
}
 
Danke für den Vorschlag! Ist aber im Prinzip ja das selbe Handling.

Das Problem bleibt bestehen und ich bin total ratlos.

Der Firefox setzt den durch die Funktion neu bekommenen Text direkt über den alten, so dass mehrere Worte aufeinander sitzen.

Vielleicht könnte mir mal jemand, der schonmal ein eigenes Gästebuch mit Smilies geschrieben hat, posten wie ich nach klick auf einen Smilie die Textarea mit dem Text + den Smiliecode füllen kann.

Bitttttttteeeeee.:rolleyes:
 
Das da in den HEAD:

<script language="JavaScript">
<!--
function SmilieEinfuegen(Smilie)
{
document.messageneuinsert.message.value+=Smilie+" ";
document.messageneuinsert.message.focus();
}
//-->
</script>


Die Smiliebilder verlinkst Du dann nach diesem Muster:

<a href="javascript:SmilieEinfuegen(':-)')"><img border="0" src="smilies/smile.gif"></a>
oder:<a href="javascript:SmilieEinfuegen(':megalol:')"><img border="0" src="smilies/megalol.gif"></a>


Dann hast Du zwei Möglichkeiten:
Entweder Du änderst die Smilie-Tags beim Schreiben in die Datenbank in die richtige Bild-Adressierung um, oder Du änderst sie beim Auslesen aus der Datenbank.
 
Sorry, aber das interpretiert der Firefox garnicht.

Für den IE haben bis jetzt eigentlich alle Lösungsansätze gepasst, aber der Firefox scheint wohl wiedermal sachen etwas genauer zu nehmen.

Es gibt doch aberhunderte Gästebücher und auch eine Hand voll Foren, in denen dies klappt.

Bitte verratet mir wie... :p
 
Zitat von Von Gestern:
Sorry, aber das interpretiert der Firefox garnicht.

Für den IE haben bis jetzt eigentlich alle Lösungsansätze gepasst, aber der Firefox scheint wohl wiedermal sachen etwas genauer zu nehmen.

Es gibt doch aberhunderte Gästebücher und auch eine Hand voll Foren, in denen dies klappt.

Bitte verratet mir wie... :p

Ich weiss nicht, was Du für einen Firefox hast, aber meiner hat keine Probleme damit.
 
Also in meinem selbstgeschriebenen Gästebuch funktiniert es so...

In einem PopUp Fenster werden alle Smilies geladen und verlinkt mit diesem Code:

PHP:
echo '<a target="index" href="javascript:InsertSmilieCode(\''.$sign.'\');"><img src="'.$path.'/'.$file.'" border="0" '.$size[3].'></a> ';

$sign = das Zeichen das in das Textfeld geladen werden soll
$size[3] = über die Funktion getimagesize() wird die Größe und Höhe des Bildes ausgelesen

Und der andere Code steht im Hauptfenster:

HTML:
<script type="text/javascript" language="JavaScript">
<!--
window.name = 'index';

function InsertSmilieCode(Code) {

 window.document.forms[0].elements[4].value = window.document.forms[0].elements[4].value + Code;

return
}

//-->
</script>

Das Hauptfenster bekommt den Namen "index", damit der Link aus dem PopUp darin aufgerufen kann und auf das JS zugreift. Dann wird in das 1. mit <form> definierte Formular und dem darin enthaltenden 5. Element, der Smiliecode an den restlichen Inhalt drangehangen. Die Zahlen in den []-Klammern stimmen, da Arrays bei 0 anfangen und nicht bei 1! Das 5. Element war bei mir die Textarea. Solltest du ein andere Reihenfolge haben, musst du einfach nur zählen an welcher x Stelle die Textarea ist und dann - 1 für den Array.

Hoffe das funktioniert jetzt und hat dir geholfen!
 
Zuletzt bearbeitet:
Ja... Hat mir wirklich geholfen. :D
Die expliziete Referenzierung aufs Fenster hat jetzt alles wieder ins Lot gerückt. *freu*:freaky:

Dank dir tausend mal.

Hast was bei mir gut. ;)
 
Zurück
Top