Foros del Web » Programando para Internet » Javascript »

Cómo poner saltos de linea en un textarea externo

Estas en el tema de Cómo poner saltos de linea en un textarea externo en el foro de Javascript en Foros del Web. Hola, no sabía si poner este hilo en la sección de Javascript o aquí, pero es que es un tema de PHP y de Javascript. ...
  #1 (permalink)  
Antiguo 04/09/2008, 01:08
Avatar de Nlrvana  
Fecha de Ingreso: marzo-2008
Mensajes: 36
Antigüedad: 16 años
Puntos: 0
Cómo poner saltos de linea en un textarea externo

Hola, no sabía si poner este hilo en la sección de Javascript o aquí, pero es que es un tema de PHP y de Javascript. Si eso que el Moderador lo mueva.

A ver, tengo un formulario que sirve para rellenar los datos de un correo que a continuación envío a otra página de un sitio externo. No tengo acceso a esa página y no la puedo modificar. Llamémosle "el otro lado".

La página admite las variables $subject y $message por GET como asunto y texto respectivamente, y las envía a sendos input y textarea que contiene, entonces, en vez de usar un submit yo se lo estoy mandando a través de un onclick y funciona bien.

Más quisiera yo que usar un submit para hacerlo, pero no me lo admite, solo funciona abriendo una ventana nueva con el window.open y enviandole las variables por GET (además ¿cómo le mando los contenidos del input y el textarea en el action?)

Resumiendo, así es como lo hago:

Código PHP:
<form name="correo" action="">
<input type="text" name="asunto" value="Asunto:">
<textarea name="texto">Texto:</textarea>
<a href="#" onclick="window.open('http://sitio.com/gestion.php?userid=<?=$id?>&subject='+document.correo.asunto.value+'&message='+document.correo.texto.value)"</a>
</form>
El problema es que mandándolo de esa manera en el textarea del otro lado no aparece ningún salto de línea (aunque se pongan en este lado), por lo que el mensaje queda un poco "apelotonado".

Se me había ocurrido aplicarle la función urlencode() de PHP al texto antes de mandarlo pero no se cómo aplicarle esa función a document.correo.asunto.value dentro del onclick sin que me de error. Además no estoy seguro de que eso funcione.

También se me había ocurrido introducir al texto sendos %0A en cada salto de línea (haciendo eso sí que funciona en el otro lado) pero no se me ocurré cómo.

¿Teneis una idea de cómo podría enviar los saltos de línea y que funcione en el otro lado?

Gracias adelantadas.

Última edición por Nlrvana; 04/09/2008 a las 01:16
  #2 (permalink)  
Antiguo 04/09/2008, 10:41
Avatar de vidalsoft  
Fecha de Ingreso: julio-2008
Ubicación: /www/...
Mensajes: 339
Antigüedad: 15 años, 8 meses
Puntos: 1
Respuesta: Cómo poner saltos de linea en un textarea externo

eso lo tienes que ver en el textarea donde limites las lineas eso lo puedes manipular con javascript o si no concatenando <br>...

ejemplo

blablablalblalblalvblaa<br>bañlbkasbaksbkabsaslbal sba<br>asasasasas<br>

donde <br> siempre va a dar el salto de linea, y la informacion se iria igual
  #3 (permalink)  
Antiguo 04/09/2008, 10:59
 
Fecha de Ingreso: abril-2006
Mensajes: 7
Antigüedad: 18 años
Puntos: 0
Respuesta: Cómo poner saltos de linea en un textarea externo

No se si entendi bien.

Si quires que te llegue por email con los saltos de linea usarias algo asi.
Si quires que salgan los saltos de linea en el broser no uses la segunda la linea de str_replace

<?php
//CODIGO PHP
$subject = $_GET['subject'];
$subject = nlb2r($subject); // poninedo saltos de linea
$subject = str_replace('<br>', "\r\n", "$subject"); // <br> a \n\r
// CODIGO PHP
?>
  #4 (permalink)  
Antiguo 04/09/2008, 11:06
Avatar de GatorV
$this->role('moderador');
 
Fecha de Ingreso: mayo-2006
Ubicación: /home/ams/
Mensajes: 38.567
Antigüedad: 17 años, 10 meses
Puntos: 2135
Respuesta: Cómo poner saltos de linea en un textarea externo

Hola Nlrvana,

Esto que comentas es del lado del cliente y como dices no tienes ingerencia sobre "el otro lado" tienes que usar herramientas como escape() en Javascript.

Tema trasladado a Javascript.
  #5 (permalink)  
Antiguo 04/09/2008, 14:11
Avatar de Nlrvana  
Fecha de Ingreso: marzo-2008
Mensajes: 36
Antigüedad: 16 años
Puntos: 0
Respuesta: Cómo poner saltos de linea en un textarea externo

Os lo voy a intentar explicar mejor a ver si podemos hacer algo:

Se trata de rellenar el contenido de un textarea que hay en el cliente en otro textarea que hay en el servidor, pero tiene que ser a través de la URL, que es como el servidor lo admite.

El textarea que hay en el servidor se rellena, pero al enviar las variables por URL se come los saltos de línea.

Este código que decís me vendría muy bien si tuviera acceso al servidor, lo pondría allí y listo.


Código PHP:
<?php
$message 
$_GET['message'];
$message nlb2r($message); // poniendo saltos de linea
$message str_replace('<br>'"\r\n""$message"); // <br> a \n\r
?>
<textarea><?=$message?></textarea>
Pero desgraciadamente no es así.

Vamos a ver:

Desde el cliente yo envío el contenido del formulario al servidor mediante un onclick. Es la manera que se me ha ocurrido para que reciba el contenido en la URL. No conozco otra manera de hacerlo. El servidor recibiría esto (por ejemplo):

http://sitio.com/gestion.php?subject=Asunto&message=HolaEste&20es%2 0el%20mensaje

Y ya ahi rellenaría el textarea fácilmente leyendo las variables por GET:

Código PHP:
<form>
<textarea><?=$_GET['message']?></textarea>
</form>
?>
Si yo pudiera de alguna manera meter &0A en la URL en los sitios donde hubiera saltos de línea y que se enviase con esos saltos de linea...


http://sitio.com/gestion?subject=Asunto&message=Hola&0AEste&20es%20el%20mensaje


..pues ya estaria, pero:


-Meter a mano &0A en el textarea de envio en cada salto de línea, funciona (pero no queda estético, ni es la manera, claro)

-Meter <br> en el formulario a mano y enviar, no funciona. El textarea en el servidor recibe los <br> como si fueran parte del texto.

-Aplicar nlb2r al contenido del textarea en este lado no se si funcionará, no lo he probado, porque no se cómo aplicar un nl2br a un document.correo.texto.value desde dentro de un onclick. Tengo mucha idea de PHP pero escasa de Javascript

Supongo que sería algo así, pero todos mis intentos me han dado error:


<form name="correo">
<input type="text" name="asunto">
<textarea name="texto"></textarea>
</form>
<a href="#" onclick="window.open('http://sitio.com/gestion.php?userid=<?=$id?>&subject='+document.cor reo.asunto.value+'&message=<?=nl2br(?>'+document.correo.texto.value<?=)?>)"</a>


Si hubiera alguna manera de detectar los saltos de línea en el textarea y de modificar la URL en el momento de hacer click en el enlace, por ejemplo dinámicamente, no se, esa sería la solución.

He intentado explicarme de la mejor manera posible. Espero que hayais entendido ahora mi problema.

Gracias por vuestra ayuda.

Última edición por Nlrvana; 04/09/2008 a las 15:03
  #6 (permalink)  
Antiguo 10/09/2008, 02:29
Avatar de Nlrvana  
Fecha de Ingreso: marzo-2008
Mensajes: 36
Antigüedad: 16 años
Puntos: 0
Respuesta: Cómo poner saltos de linea en un textarea externo

Bueno, he estado investigando la solución y la he encontrado, por lo que me respondo a mi mismo por si a alguien le sirve de ayuda.

Después de partirme los cuernos dándole vueltas al problema (y de estudiar las Especificaciones de los Formularios en la página del World Wide Web Consortium --> w3.org/TR/html401/interact/forms.html ), me di cuenta de que enviando el formulario mediante un onclick, la URL no se formateaba en el servidor remoto tal y como mandan las especificaciones, es decir, no cumplía con el content type debido, el application/x-www-form-urlencoded.

Probé a forzar en las etiquetas del form el content type (enctype=application/x-www-form-urlencoded), (a pesar de que es el que se usa por defecto) pero aquello no resolvía mi problema. Empezaba a darme cuenta de que un onclick no servía para lo que yo necesitaba. Para mandar un texto que cumpliera las especificaciones necesitaba obligatoriamente enviarlo con un submit.

Creé el submit y probé con el y entonces el texto sí se enviaba correctamente formateado. Pero seguía sin funcionar, faltaba algo y ese algo eran las variables que se enviaban al servidor mediante campos ocultos, las cuales averigué analizando con Firebug el código de la página del servidor remoto que recibía el form. Las preparé en forma de campos ocultos y problema solucionado.


Ahora que ya esta resuelto, todavía me queda la duda de si es posible aplicar funciones PHP al contenido de un textarea enviado mediante un onclick o al contenido de cualquier otro elemento de un formulario que haya sido leído desde Javascript.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 20:43.