2010-01-29 24 views
38

Próbuję dodać ciągi znaków, które kończą się znakami nowej linii do textarea przy użyciu jQuery. Jednak różne tokeny nowej linii pokazują różne zachowania w Firefox3.5 i IE8 i nie mogę znaleźć sposobu na użycie czegoś, co działa w obu przeglądarkach.jQuery textarea append zachowanie nowej linii

  • \n działa w FF, ale nie w IE
  • <br/> i \r\n działa w IE, ale nie w FF
  • bez powodzenia przy użyciu <pre></pre> tagów albo

widziałem informacji na Problem IE innerHTML, ale nie jestem do końca pewien, jak najlepiej rozwiązać ten problem w jQuery. Dzięki za pomoc!

Odpowiedz

73

Nie wiem, jak ustawiasz zawartość textarea, ale jeśli używasz metody jQuery val, \n działa konsekwentnie w Firefoksie i IE (łącznie z IE8):

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

Powoduje textarea do wyświetlenia:

istniejącej zawartości
i linebreaks jeśli występują.
Coś tu

Ponownie

Widać tutaj, że demo działa w FF i IE8: Demo | Source

+0

Dzięki, to działa! Czy wiesz, jak wydajne jest to porównanie z append()? – Suan

+0

Ponadto, co zaskakujące, 'textarea.empty()' nie działa, gdy używasz 'val()'. (Kiedyś pracował, gdy użyłem 'append()'). Możesz wrócić do strony http://jsbin.com/unali/3/edit, aby ją zobaczyć. Naprawdę fajne narzędzie btw! – Suan

+1

@Suan, będzie działać szybciej niż '.append()', ponieważ ustawia atrybut a nie miesza się z DOMem. Ponadto, po prostu wywołaj '.val ('')', aby opróżnić obszar tekstowy. W "starej szkole JS" można ustawić/ustawić wartość textarea w następujący sposób: 'var txt = document.getElementById ('idhere'); txt.value + = "\ nCoś tutaj \ n \ nAgain"; 'Zobacz, jak używa on atrybutu vs elementów DOM? –