Andre: Sonderzeichen an Cursorposition einfügen

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.

  1. 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

    --
    „This is the author's opinion, not necessarily that of Starbucks.“
    1. 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

      --
      --
      Developers are dying. Computers are getting trash. CEO's become forgetten. The only remaining things are ideas, lies and crises. So if you want to be immortal, first think, than stop it and go to microsoft and become later a manager at Lehman Brothers...
      sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
      *Zu dem de:> Ich benutze wegen IE im moment noch tabellen, weil dieser display:table noch nicht versteht. Ich werde aber, wenn IE 6 & IE 7 < 10% mein neues CSS-Layout einspielen...
    2. 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

      1. Hallo,

        ...oder hier bei Selfhtml...

        mfg, Flo

        --
        --
        Developers are dying. Computers are getting trash. CEO's become forgetten. The only remaining things are ideas, lies and crises. So if you want to be immortal, first think, than stop it and go to microsoft and become later a manager at Lehman Brothers...
        sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
        *Zu dem de:> Ich benutze wegen IE im moment noch tabellen, weil dieser display:table noch nicht versteht. Ich werde aber, wenn IE 6 & IE 7 < 10% mein neues CSS-Layout einspielen...
        1. ...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

          1. Hallo,

            Die kann man doch einfach umrechnen!?

            mfg, Flo

            --
            Developers are dying. Computers are getting trash. CEO's become forgetten. The only remaining things are ideas, lies and crises. So if you want to be immortal, first think, than stop it and go to microsoft and become later a manager at Lehman Brothers...
            sh:) fo:| ch:? rl:( br:^ n4:| ie:{ mo:| va:} de:> zu:} fl:{ ss:) ls:< js:|
            *Zu dem de:> Ich benutze wegen IE im moment noch tabellen, weil dieser display:table noch nicht versteht. Ich werde aber, wenn IE 6 & IE 7 < 10% mein neues CSS-Layout einspielen...
          2. @@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

            --
            Erwebsregel 208: Manchmal ist das einzige, was gefährlicher als eine Frage ist, eine Antwort.
            1. 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