Powl: Sonderzeichen in Textarea einfügen

Hallo,

Folgendes Problem. Ich möchte über Anlicken von Symbolen Sonderzeichen in eine Textarea einfügen. Das funktioniert im Prinzip soweit. Falls das von Belang sein sollte, das Dokument ist in utf-8 codiert.

Über

  
<img src="foo.gif"  height="20" width="20" alt="foo" title="foo" onclick='insert_sz("&lt;")' />  

~~~ gebe ich die Zeichen an eine JS Funktion:  
~~~"JavaScript"
  
function insert_sz(sz) {  
  var textarea = document.getElementByID("textarea");  
  textarea.value = textarea.value + sz;  
}

Das Problem ist, dass in der Textarea nicht &lt; erscheint, sondern <. Weil ich den Inhalt aber später als HTML ausgeben möchte, sind < und > ziemlich ärgerlich, genauso wie &,wenn nicht entsprechend codiert als Entity (&lt; &gt; &amp;).

Was kann ich machen, damit die Zeichen im Textfeld auch als Entity geschrieben werden, und nicht als Klartextzeichen?

netten Tag
^da Powl

--
===============================
powl.hat-gar-keine-homepage.de/
  1. Mahlzeit,

    Das Problem ist, dass in der Textarea nicht &lt; erscheint, sondern <.

    Was auch logisch ist, da als http://de.selfhtml.org/html/referenz/elemente.htm#textarea@title=Kindelement von <textarea> lediglich "<http://de.selfhtml.org/html/referenz/elemente.htm#pcdata@title=parsed character data>" erlaubt sind, d.h. evtl. enthaltene HTML-Notationen wie &lt;, &#x20AC; oder &#8364; werden vom Browser geparst und dargestellt.

    Weil ich den Inhalt aber später als HTML ausgeben möchte, sind < und > ziemlich ärgerlich, genauso wie &,wenn nicht entsprechend codiert als Entity (&lt; &gt; &amp;).

    Wann später? Und wie?

    Was kann ich machen, damit die Zeichen im Textfeld auch als Entity geschrieben werden, und nicht als Klartextzeichen?

    Vor dem Hinzufügen die übergebenen Zeichen entsprechend maskieren (d.h. & in &amp; wandeln usw.).

    MfG,
    EKKi

    --
    sh:( fo:| ch:? rl:( br:> n4:~ ie:% mo:} va:) de:] zu:) fl:{ ss:) ls:& js:|
    1. Hallo,

      Vor dem Hinzufügen die übergebenen Zeichen entsprechend maskieren (d.h. & in &amp; wandeln usw.).

      Vor dem Hinzufügen? Meinst Du hier?

      function insert_sz(sz) {
        var textarea = document.getElementByID("textarea");
      =>umwandeln?
        textarea.value = textarea.value + sz;
      }

      Klingt nicht logisch, denn als var sz kommt doch immer eine Entity an.

      Andererseits werden die Daten per PHP weiterverarbeitet und an ein Ausgabeskript gesendet.
      Nur wenn ich dann htmlspecialchars verwende, werden auch enthaltene Tags umgewandelt, und das möchte ich gerade nicht. Dann müsste ich also eine Funktion bauen, die < und > umwandelt, sofern es nicht <tag> oder </tag> oder <tag /> ist, richtig? Auch nicht einfach, was würde aus "zwei<drei>eins"? mit "/\b<\b/" ja nicht zu erwischen. :(

      Am liebsten wäre mir eine JavaScript Funktion, die eben auch Entities ins Textfeld schreibt, aber das scheint nicht zu gehen, oder habe ich das falsch verstanden?

      netten Tag
      ^da Powl

      --
      ===============================
      powl.hat-gar-keine-homepage.de/
      1. Hi,

        Vor dem Hinzufügen die übergebenen Zeichen entsprechend maskieren (d.h. & in &amp; wandeln usw.).

        Vor dem Hinzufügen? Meinst Du hier?

        D'oh!

        function insert_sz(sz) {
          var textarea = document.getElementByID("textarea");
        =>umwandeln?
          textarea.value = textarea.value + sz;
        }

        Klingt nicht logisch, denn als var sz kommt doch immer eine Entity an.

        An der Stelle, wo du das Zeichen notierst natuerlich ...

        Am liebsten wäre mir eine JavaScript Funktion, die eben auch Entities ins Textfeld schreibt, aber das scheint nicht zu gehen, oder habe ich das falsch verstanden?

        <img onclick='insert_sz("&lt;")' />

        ^^^^
        Wenn du an dieser Stelle *nicht* das Zeichen < meinst - dann notiere einfach *nicht* dieses Zeichen in der Entity-Schreibweise.

        &amp;lt;

        MfG ChrisB

        1. Hallo,

          Abgesehen dass mir das jetzt schon fast peinlich hast, hast Du mir gerade den Tag gerettet. Danke!
          Jetzt wo Du's gesagt hast fällt's mir wie Schuppen aus den Haaren...

          netten Tag
          ^da Powl

          --
          ===============================
          powl.hat-gar-keine-homepage.de/
    2. Hi,

      Das Problem ist, dass in der Textarea nicht &lt; erscheint, sondern <.

      Was auch logisch ist, da als http://de.selfhtml.org/html/referenz/elemente.htm#textarea@title=Kindelement von <textarea> lediglich "<http://de.selfhtml.org/html/referenz/elemente.htm#pcdata@title=parsed character data>" erlaubt sind, d.h. evtl. enthaltene HTML-Notationen wie &lt;, &#x20AC; oder &#8364; werden vom Browser geparst und dargestellt.

      Ich wuerde behaupten, die Umwandlung ist bereits vorher passiert:

      <img src="foo.gif"  height="20" width="20" alt="foo" title="foo" onclick='insert_sz("&lt;")' />

      Bereits hier duerfte der Browser &lt; in < "umgewandelt" haben.

      MfG ChrisB

  2. Hellihello

    Das Problem ist, dass in der Textarea nicht &lt; erscheint, sondern <.

    Ist das nicht logisch, weil in HTML "&lt;" als "<" angzeigt wird?

    Weil ich den Inhalt aber später als HTML ausgeben möchte

    Wie denn und wo?

    , sind < und > ziemlich ärgerlich, genauso wie &,wenn nicht entsprechend codiert als Entity (&lt; &gt; &amp;).

    s.o.

    Dank und Gruß,

    frankx

    --
    tryin to multitain  - Globus = Planet != Welt