markierung ersetzen lassen im textarea.
Thomas Kellner
- javascript
Hallo,
ich suche Codes für den IE, Mozilla, Netscape, womit man aktuell markierten Text in einem Textarea ersetzen, kann, es geht um die Einbindung von bbcode. Für den IE habe ich schon den Code gefunden, jedoch das Problem besteht das außer halb des Textareas dieses Feature auch greift.
var text_selection="";
function tag_insert(tag,assistent)
{
if(assistent=="no" && document.selection)
{
text_selection=document.selection.createRange();
text_selection.text="["+tag+"]"+text_selection.text+"[/"+tag+"]";
}
else if(assistent=="yes" && tag=="b")
{
text=prompt("Bitte um Eingabe des Textes, der fett dargestellt werden soll.","")
if(text!="" && text!=null)
window.document.posting.elements["Message"].value+="[b]"+text+"[/b]";
}
else if(assistent=="no")
{
window.document.posting.elements["Message"].value+="["+tag+"][/"+tag+"]";
tag_last=tag;
}
window.document.posting.elements["Message"].focus();
}
Das Problem wenn ich auf den Link >> javascript:tag_insert('b') betätige, werden die Tags am Anfang der Seite eingefügt, jedoch sollen die Tags nur im Textarea namens Message eingefügt werden, selbst das Markieren klappt wie richtig innerhalb des Textareas, aber auch außerhalb welches aber nicht der Fall seien sollte, wo liegt der Fehler.
var text_selection="";
function tag_insert(tag,assistent)
{
if(assistent=="no" && document.selection)
{
text_selection=document.selection.createRange();
text_selection.text="["+tag+"]"+text_selection.text+"[/"+tag+"]";
}
else if(assistent=="yes" && tag=="b")
{
text=prompt("Bitte um Eingabe des Textes, der fett dargestellt werden soll.","")
if(text!="" && text!=null)
window.document.posting.elements["Message"].value+="[b]"+text+"[/b]";
}
else if(assistent=="no")
{
window.document.posting.elements["Message"].value+="["+tag+"][/"+tag+"]";
tag_last=tag;
}
window.document.posting.elements["Message"].focus();
}
Für den Mozilla + Netscape habe ich auch einen Code gefunden, abee dieser scheint nicht so richtig zu funktionieren.
if(assistent=="no" && window.getSelection)
{
text_selection=window.getSelection().toString();
text_selection="["+tag+"]"+text_selection+"[/"+tag+"]";
}
else if(assistent=="no" && document.getSelection)
{
text_selection=document.getSelection();
text_selection="["+tag+"]"+text_selection+"[/"+tag+"]";
}
Ich hab das ganze Script noch einmal überarbeitet: Das ist das Ergebnis:
<code>
function tag_insert(tag,assistent)
{
if(assistent=="no" && document.selection)
{
text_selection="["+tag+"]"+document.selection.createRange().text+"[/"+tag+"]";
window.document.posting.elements["Message"].value+=text_selection;
}
else if(assistent=="no" && document.getSelection)
{
text_selection="["+tag+"]"+document.getSelection()+"[/"+tag+"]";
window.document.posting.elements["Message"].value+=text_selection;
}
else if(assistent=="no" && window.getSelection)
{
text_selection="["+tag+"]"+window.getSelection().toString()+"[/"+tag+"]";
window.document.posting.elements["Message"].value+=text_selection;
}
else if(assistent=="yes" && tag=="b")
{
text=prompt("Bitte um Eingabe des Textes, der fett dargestellt werden soll.","")
if(text!="" && text!=null)
window.document.posting.elements["Message"].value+="[b]"+text+"[/b]";
}
else if(assistent=="no")
{
window.document.posting.elements["Message"].value+="["+tag+"][/"+tag+"]";
tag_last=tag;
}
else
{
window.document.posting.elements["Message"].value+="";
}
window.document.posting.elements["Message"].focus();
}
</code> Im IE läuft bisher alles Gut, bis das wenn ich einen Textabschnitt im Textarea markiere beispielsweise 'ff', wird aber zu 'ff[b]ff[/b]', wo liegt aber da der Fehler. Das Problem wenn ich text außer halb des textareas markiere und auf deem Link javascript:tag_insert('b',no') klicke wird der Text normal eingegeben: '[b]....[/b]'. Im Mozilla bzw. Netscape besteht der Fall, dass wenn ich Text außerhalb des Textareas markiere dieser ordnungsgemäß eingefügt wird: '[b].....[/b]', jedoch bei Markierung innerhalb des Textareas, wird nur hinter markierten Teil '[b][/b]' ausgegeben, wo liegt also da der Fehler.
Hallo Thomas
vielleicht hilfen dir Siechfreds Beiträge zu diesem Thema von vor ein paar Tagen:
http://forum.de.selfhtml.org/archiv/2004/10/91944
Gruß Gernot