2010-01-29 20 views
38

Estoy tratando de agregar cadenas que terminan en líneas nuevas a un área de texto usando jQuery. Sin embargo, diferentes tokens de nueva línea muestran un comportamiento diferente en Firefox3.5 e IE8, y parece que no puedo encontrar la forma de usar algo que funcione para ambos navegadores.jQuery textarea añadir comportamiento newline

  • \n obras en FF, pero no en IE
  • <br/> y \r\n trabajo en IE pero no en FF
  • No hubo suerte usando <pre></pre> etiquetas ya sea

que he visto información sobre la Es un problema interno de HTML, pero no estoy seguro de cómo abordar este problema en jQuery. ¡Gracias por cualquier ayuda!

Respuesta

73

No sabe cómo se está ajustando el contenido de área de texto, pero si se utiliza el método jQuery val\n, trabaja constantemente en Firefox e IE (incluyendo IE8):

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

Hace que el área de texto para mostrar:

contenido existente
y saltos de línea si los hubiere.
algo aquí

Una vez más

Usted puede ver una demostración aquí que funciona en FF e IE8: Demo | Source

+0

Gracias, esto funciona! ¿Sabrías qué tan eficiente es esto comparado con append()? – Suan

+0

Además, sorprendentemente, 'textarea.empty()' no funciona cuando se usa 'val()'. (Solía ​​funcionar cuando usaba 'append()'). Puede volver a http://jsbin.com/unali/3/edit para verlo. Herramienta realmente ordenada por cierto! – Suan

+1

@Suan, funcionará más rápido que '.append()' porque está configurando un atributo vs. jugando con el DOM. Además, simplemente llame a '.val ('')' para vaciar el área de texto. En "JS de la vieja escuela" obtendría/establecería un valor de área de texto como este: 'var txt = document.getElementById ('idhere'); txt.value + = "\ nAlgo aquí \ n \ nUna vez más"; '¿Ve cómo usa un atributo frente a los elementos DOM? –