2011-05-14 13 views
24

Aquí hay muchos hilos sobre la conversión de br /> o la preservación de nuevas líneas en diferentes idiomas, pero no muchos con respecto a textarea.Nueva línea en Textarea que se convertirá en <br/>

tengo este script:

var boxText = ""; 
$("textarea.BoxText").live('dblclick', function() { 
    boxText = $(this).val().replace(/ /g, "<br/>"); 
    $(this).replaceWith('<div class="BoxText">' + $(this).val() + '</div>'); 

}); 
$("div.BoxText").live('dblclick', function() { 
    $(this).replaceWith('<textarea form="HTML" class="BoxText">' + boxText + '</textarea>'); 
}); 

que tienen un elemento de área de texto, editable. Cuando el usuario hace doble clic en él, lo convierte en un div. Sin embargo, en un div, las nuevas líneas no se conservan. Me gustaría convertir solo las nuevas líneas en
, actualmente, todos los espacios se están convirtiendo. Tengo un segundo script que lo convierte de nuevo a textarea, de ahí la variable para almacenar la cadena. Necesitaría que el
sea reconvertido en nuevas líneas también.

Esto puede parecer redundante, pero tengo una buena razón para esto.

Respuesta

72

Esto reemplazará los saltos de línea a las etiquetas HTML break. Las diferentes combinaciones son para cubrir los diferentes navegadores/sistemas y cómo se interpretan los saltos de línea.

 
$(this).val().replace(/\r\n|\r|\n/g,"<br />") 

Esto lo traerá de vuelta a las nuevas líneas, cubriendo también cómo los diferentes navegadores interpretan innerHTML.

 
boxText.replace(/<br\s?\/?>/g,"\n"); 
+0

Funciona, sin embargo, cuando convierto el div a un área de texto, el texto desaparece. –

+0

Es posible que deba reemplazar también < and > con las entidades HTML. .replace (//g, ">"); – Neil

+1

tampoco funcionó, las br /> se muestran en el área de texto, lo que implica que no se están convirtiendo a \ n. http://jsfiddle.net/QUFZJ/ –

Cuestiones relacionadas