Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

328
Vistas
El valor del área de texto no conserva los saltos de línea de la variable

Tengo un área de texto que debe conservar el valor y el formato enviados después del envío, pero por algún motivo \n no parece pasarse de la variable php variable.

 $text = '1\n2\n3'; echo '<script> var text = "'.$text.'"; $( document ).ready(function() { $("textarea").attr("placeholder","1) Start Each Comment On A New Line..."); $("textarea").val(text); }); </script>'

La variable se pasa de php a JS. Cuando hago eco de la variable obtengo el resultado esperado:

 1\n2\n3

Cuando la variable se asigna al valor del área de texto, el resultado es:

 123

En vez de:

 1 2 3

Ahora, si cambio el js a lo siguiente, obtengo el resultado esperado con cada número en una nueva línea.

 $("textarea").val("1\n2\n3");

¿Alguien sabe por qué la variable php no pasa \n regresa a JS?

about 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

El uso de la codificación json debería escapar de los saltos de línea de una manera que JS entenderá.

 $text = json_encode('1\n2\n3'); echo '<script> var text = JSON.parse("'.$text.'"); $( document ).ready(function() { $("textarea").attr("placeholder","1) Start Each Comment On A New Line..."); $("textarea").val(text); }); </script>'
about 4 years ago · Santiago Trujillo Denunciar

0

Deberías usar esto.

 <script src="https://code.jquery.com/jquery-3.1.1.min.js" integrity="sha256-hVVnYaiADRTO2PzUGmuLJr8BLUSjGIZsDYGmIJLv2b8=" crossorigin="anonymous"></script> <textarea rows="4" cols="50"> </textarea> <?php $text = '1\n2\n3'; echo '<script> var text = "'.$text.'"; $( document ).ready(function() { $("textarea").attr("placeholder","1) Start Each Comment On A New Line..."); $("textarea").val(text); }); </script>' ?>

ingrese la descripción de la imagen aquí

about 4 years ago · Santiago Trujillo Denunciar

0

El problema es que espera que el Javascript del navegador entienda el carácter "\n" de PHP. Eso no funcionará. Además, su código usa la comilla simple para denotar el carácter de nueva línea. PHP requiere que use comillas dobles para indicar el carácter especial de nueva línea.

Hay al menos dos formas de arreglar esto.

La primera es usar la función nl2br() de PHP. En ese caso, su código podría reescribirse como:

 $text = "1\n2\n3"; //notice the use of double quotes. echo '<script> var text = "'. nl2br($text).'"; $( document ).ready(function() { $("textarea").attr("placeholder","1) Start Each Comment On A New Line..."); $("textarea").val(text); }); </script>'

Una segunda forma es usar el HTML
etiquetar directamente en su declaración de variable. Esto obviaría la necesidad de usar la función nl2br() de PHP.

 $text = '1<br>n2<br>n3'; echo '<script> var text = "'.$text.'"; $( document ).ready(function() { $("textarea").attr("placeholder","1) Start Each Comment On A New Line..."); $("textarea").val(text); }); </script>'

Cualquiera de los dos enfoques debería funcionar.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda