2010-01-29 15 views
38

Sto provando ad aggiungere stringhe che terminano in una nuova area di testo usando jQuery. Tuttavia, diversi token newline mostrano un comportamento diverso in Firefox3.5 e IE8 e non riesco a trovare un modo per utilizzare qualcosa che funzioni per entrambi i browser.jQuery textarea append comportamento newline

  • \n opere in FF, ma non in IE
  • <br/> e \r\n lavoro in IE, ma non in FF
  • Nessuna fortuna utilizzando <pre></pre> tag sia

che ho visto informazioni sulla Problema IE innerHTML ma non sono esattamente sicuro di come affrontare al meglio questo problema in jQuery. Grazie per qualsiasi aiuto!

risposta

73

Non sono sicuro di come si sta impostando il contenuto textarea, ma se si utilizza il metodo di jQuery val, \n funziona in modo coerente in Firefox e IE (Compreso IE8):

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

cause textarea da visualizzare:

contenuto esistente
e le interruzioni di linea eventuali.
qualcosa qui

Anche in questo caso

Potete vedere una demo qui che funziona in FF e IE8: Demo | Source

+0

Grazie, funziona! Sapresti quanto è performante rispetto ad append()? – Suan

+0

Inoltre, sorprendentemente, 'textarea.empty()' non funziona quando si usa 'val()'. (Funzionava quando ho usato 'append()'). Puoi tornare a http://jsbin.com/unali/3/edit per vederlo. Strumento davvero bello btw! – Suan

+1

@Suan, si esibirà più velocemente di '.append()' perché sta impostando un attributo contro il DOM. Inoltre, basta chiamare '.val ('')' per svuotare la textarea. In "old school JS" otterresti/imposterai un valore textarea come questo: 'var txt = document.getElementById ('idhere'); txt.value + = "\ nQualcosa qui \ n \ nAgain"; 'Guarda come usa un attributo rispetto agli elementi DOM? –