Sonderzeichen an Cursorposition einfügen
Andre
- javascript
Hallo zusammen,
ich möchte mit Hilfe kleiner Button Sonderzeichen in eine Textarea einfügen können.
Zum Einfügen benutze ich folgende Funktion:
function insert_text(strText,objElem)
{
if(document.selection) //für IE
{
objElem.focus();
document.selection.createRange().text=strText;
document.selection.createRange().select();
}
else if (objElem.selectionStart || objElem.selectionStart == '0') //für auf Gecko basierende Browser
{
intStart = objElem.selectionStart;
intEnd = objElem.selectionEnd;
objElem.value = (objElem.value).substring(0, intStart) + strText + (objElem.value).substring(intEnd, objElem.value.length);
objElem.selectionStart=objElem.selectionEnd=intStart+strText.length;
objElem.focus();
}
else //für den Rest
{
objElem.value += strText;
}
}
Die Sonderzeichen sind als HTML-Entity in einem Array gespeichert und werden je nach klick auf einen Button an die Variable strText übergeben. Das Problem ist nun, dass die HTML-Entities als Text, also ausgeschrieben(z.B µ) in der Textarea ausgegeben werden und nicht als Sonderzeichen.
Wenn ich die Sonderzeichen nur anhängen möchte:
document.getElementById(" ").innerHTML = document.getElementById(" ").innerHTML + text;
Werden die Sonderzeichen ganz normal dagestellt, so wie ich es möchte.
Ich wäre sehr dankbar, wenn mir jemand sagen könnte, wie ich das Problem in den Griff bekomme!
//Ich habe das Programm bis jetzt nur im Internetexplorer getestet.
Hi,
Die Sonderzeichen sind als HTML-Entity in einem Array gespeichert und werden je nach klick auf einen Button an die Variable strText übergeben. Das Problem ist nun, dass die HTML-Entities als Text, also ausgeschrieben(z.B µ) in der Textarea ausgegeben werden und nicht als Sonderzeichen.
Natuerlich - genau diese Zeichenketten hast du ja auch in deinem Array abgelegt.
Wenn ich die Sonderzeichen nur anhängen möchte:
document.getElementById(" ").innerHTML = document.getElementById(" ").innerHTML + text;
Werden die Sonderzeichen ganz normal dagestellt, so wie ich es möchte.
Dann hast du sie ja auch in den Kontext HTML gebracht.
Bei der Textarea ist und bleibt der Kontext aber Text.
Ich wäre sehr dankbar, wenn mir jemand sagen könnte, wie ich das Problem in den Griff bekomme!
Lege die Sonderzeichen in deinem JS-Array ab, und nicht HTML-Entities.
MfG ChrisB
Hallo,
Du kannst es auch von hinten durch die Brust ins Auge machen:
[*] Neuen div anlegen oder existierenden selektieren.
[*] innerHTML auf 'ö' o.ä. setzen.
[*] mit node.data oder node.innerText abfrage, da müsste 'ö' rauskommen.
Ich hab auf sie Schnelle wahrscheinlich nicht alles beachtet, aber hoffentlich hast du nun einen Denkanstoß!
mfg, Flo
Lege die Sonderzeichen in deinem JS-Array ab, und nicht HTML-Entities.
Und unabhängig von der Kodierung kannst du die Zeichen in JS-Strings mit Unicode-Escape-Sequenzen nach dem Schema \uXXXX einbinden. XXXX steht für die hexadezimale Unicode-Nummer des Zeichens.
Die Nummern findest du in Datenbanken wie diesen:
http://www.utf8-zeichentabelle.de/unicode-utf8-table.pl?utf8=-&unicodeinhtml=dec
http://www.sql-und-xml.de/unicode-database/
Mathias
Hallo,
...oder hier bei Selfhtml...
mfg, Flo
...oder hier bei Selfhtml...
Ich denke nicht. In der http://de.selfhtml.org/html/referenz/zeichen.htm@title=Zeichenreferenz gibt es nur die dezimalen Nummern der Zeichen, für die HTML-Entities existieren. Das ist für hexadezimale Escape-Sequenzen nicht so geeignet.
Mathias
Hallo,
Die kann man doch einfach umrechnen!?
mfg, Flo
@@molily:
...oder hier bei Selfhtml...
Ich denke nicht. In der http://de.selfhtml.org/html/referenz/zeichen.htm@title=Zeichenreferenz gibt es nur die dezimalen Nummern der Zeichen […]
Das wird sich hoffentlich in SELFHTML 9 ändern. Die NCRs sollten IMHO unbedingt hexadezimal in der Tabelle stehen; die dezimale Angabe wäre optional, kann wegen mangelndem Sinn aber getrost weggelassen werden.
http://forum.de.selfhtml.org/archiv/2006/10/t139025/#m903223
http://forum.de.selfhtml.org/archiv/2007/7/t156869/#m1020537
Bedarf es dafür noch eines Tickets?
Live long and prosper,
Gunnar
http://forum.de.selfhtml.org/archiv/2007/7/t156869/#m1020537
Bedarf es dafür noch eines Tickets?
Ja, ich werde es nochmal vermerken, danke auch für den Hinweis auf diese plausible Erklärung.
Mathias