RiPr: String in Input schreiben --> Problem mit &

Hallo!
Auf meiner Seite habe diverste Textelemente. Wenn ich auf ein solches Element klicke soll der Text ausgelesen werden und in ein Input geschrieben werden (stark vereinfacht erklärt).

Das funktioniert soweit auch. Nur bei Sonderzeichen habe ich noch Probleme:

  
  
<p>Ein Text &amp; ein Sonderzeichen</p>  
<input type="text" value=""/>  
  

  
  
//es wird jquery benutzt  
var text_element = $('p').html();  
$('input').val(text_element);  
  

Statt "Ein Text & ein Sonderzeichen" (so wird es auch in meinem p Element angezeigt) steht nun in meinem input "Ein Text &amp; ein Sonderzeichen", also mit &amp; . Wie bekomme ich das &amp; zu einem & in meinem input?

Gibt es eine schönere Lösung als das "hart" zu ersetzen?

Info: Das &amp; in meinem p kann ich nicht ändern!

  1. Hi!

    Info: Das &amp; in meinem p kann ich nicht ändern!

    Sollst Du ja auch nicht. Wie das &amp; schoen zeigt, hat das & eine besondere Bedeutung in HTML. Ich kenne jquery nicht, aber du musst solche Dinge ersetzen, wenn Du sie in ein Input-Feld schreiben willst. Schreib Dir eine Funktion hierfuer, falls jquery sowas nicht mitbringt.

    --
    Vergesst Chuck Norris.
    Sponge Bob kann unter Wasser grillen!
  2. Hi,

    <p>Ein Text &amp; ein Sonderzeichen</p>

    <input type="text" value=""/>

    
    >   
    > ~~~javascript
    
    //es wird jquery benutzt  
    
    > var text_element = $('p').html();  
    > $('input').val(text_element);
    
    

    Statt "Ein Text & ein Sonderzeichen" (so wird es auch in meinem p Element angezeigt) steht nun in meinem input "Ein Text &amp; ein Sonderzeichen", also mit &amp; .

    Logisch, das *ist* ja auch das, was im HTML des Elements steht.

    Beim Zugriff auf das value-Attribut eines Textfeldes in JavaScript wird aber Text erwartet, der bereits „geparst“ *ist* - eine Umsetzung von HTML-Entities findet innerhalb von JavaScript nicht mehr statt.
    (Wenn das value im HTML stehen würde, value="Ein Text &amp; ein Sonderzeichen" - dann wäre das was anderes. Das würde vom HTML-Parser beim Erstellen des Textfeldes entsprechend umgesetzt.)

    Wie bekomme ich das &amp; zu einem & in meinem input?

    Lese nicht das HTML aus, sondern den Textinhalt.
    Statt .html() -> .text()

    MfG ChrisB

    --
    RGB is totally confusing - I mean, at least #C0FFEE should be brown, right?
    1. Danke - mit .text() funktioniert es!

  3. @@RiPr:

    nuqneH

    var text_element = $('p').html();

    Du möchtest nicht html() verwenden, sondern [link:http://api.jquery.com/text/@title=text()].

    Info: Das &amp; in meinem p kann ich nicht ändern!

    Auch wenn du es könntest, solltest du es nicht tun. [ESCAPES]

    Qapla'

    --
    Gut sein ist edel. Andere lehren, gut zu sein, ist noch edler. Und einfacher.
    (Mark Twain)
    1. Danke - das wars!