2010-01-29 12 views
38

Ich versuche, eine Zeichenkette, die in Zeilenumbrüche enden, an ein Textfeld mit jQuery anzuhängen. Verschiedene Newline-Tokens zeigen jedoch ein unterschiedliches Verhalten in Firefox 3.5 und IE8, und ich kann anscheinend keine Möglichkeit finden, etwas zu verwenden, das für beide Browser funktioniert.jQuery TextArea append Newline-Verhalten

  • \n Werke in FF aber nicht in IE
  • <br/> und \r\n Arbeit in IE, aber nicht in FF
  • kein Glück mit <pre></pre> Tags entweder

ich Informationen über das gesehen habe IE innerHTML Problem, aber ich bin nicht genau sicher, wie man dieses Problem in jQuery am besten angeht. Danke für jede Hilfe!

Antwort

73

nicht sicher, wie Sie den Textbereich Inhalt setzen, aber wenn Sie die jQuery val Methode verwenden, \n arbeiten konsequent in Firefox und IE (einschließlich IE8):

var txt = $("textarea#idhere"); 
txt.val(txt.val() + "\nSomething here\n\nAgain"); 

bewirkt, dass das Textfeld angezeigt werden soll:

Bestehende Inhalte
und Zeilenumbrüchen falls vorhanden.
Etwas hier

Wieder

Sie können eine Demo hier sehen, die in FF und IE8 funktioniert: Demo | Source

+0

Danke, das funktioniert! Würdest du wissen, wie leistungsfähig das im Vergleich zu append() ist? – Suan

+0

Überraschenderweise funktioniert 'textarea.empty()' auch nicht, wenn Sie 'val()' verwenden. (Es hat früher funktioniert, als ich 'append()' benutzt habe). Sie können zurück zu http://jsbin.com/unali/3/edit gehen, um es zu sehen. Wirklich ordentliches Werkzeug übrigens! – Suan

+1

@Suan, es wird schneller als '.append()' ausführen, weil es ein Attribut gegen das Mischen mit dem DOM setzt. Rufen Sie einfach '.val ('')' auf, um den Textbereich zu leeren. In "Old School JS" würde man einen Textarea-Wert wie folgt erhalten/setzen: 'var txt = document.getElementById ('idhere'); txt.value + = "\ nEin bisschen here \ n \ nAgain"; 'Sehen Sie, wie es ein Attribut vs. DOM-Elemente verwendet? –