Foros del Web » Programando para Internet » Javascript »

Saltos de línea con campo <textarea>

Estas en el tema de Saltos de línea con campo <textarea> en el foro de Javascript en Foros del Web. Hola. Mi problema es que, al recoger un texto de un campo <textarea> de un formulario e imprimirlo en pantalla con javascript, si este texto ...
  #1 (permalink)  
Antiguo 27/05/2004, 17:53
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 6 meses
Puntos: 20
Saltos de línea con campo <textarea>

Hola.

Mi problema es que, al recoger un texto de un campo <textarea> de un formulario e imprimirlo en pantalla con javascript, si este texto tiene saltos de línea me falla. El código de prueba es el siguiente:

<?php
if (isset($texto)) {
?>
<script language="javascript">
var a="<? echo($texto) ?>";
document.write(a);
</script>
<?
}
?>
<form>
<textarea name=texto></textarea>
<input type=submit value=Enviar>
</form>


¿Sabéis cómo puedo resolverlo? Gracias de antemano.

Mario.
  #2 (permalink)  
Antiguo 27/05/2004, 18:03
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola mariogl84:


Supongo que si lo pones dentro de un tag "pre" te saldría como quieres :


<script language="javascript">
var a="<? echo '<pre>$texto</pre>'; ?>";
document.write(a);
</script>

Me parece que la sintaxis php es correcta.

Saludos
  #3 (permalink)  
Antiguo 28/05/2004, 00:35
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Creo, caricatos que va a seguir fallando. Porque no hay variable de más de una línea.

Prueba a poner:

<?php
if (isset($texto)) {
?>
<script language="javascript">
var a="<? echo nl2br($texto); ?>";
document.write(a);
</script>
<?
}
?>
<form>
<textarea name=texto></textarea>
<input type=submit value=Enviar>
</form>

Con esto le añadirá los <br> necesarios...

Un saludo!!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #4 (permalink)  
Antiguo 28/05/2004, 02:03
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 6 meses
Puntos: 20
Con n12br le añade los <br> necesarios, pero sigue dividiéndolo en varias líneas, es decir, el html generado es:

<script language="javascript">
a="Ésta es la primera línea.<br />
Ésta es la segunda línea.";
document.write(a);
</script>


Me valdría incluso si me quitara ese salto de línea, no necesito que lo convierta a <br> porque es para la entradilla de una noticia y puede ir todo seguido. Pero no hay manera de quitarlo...
  #5 (permalink)  
Antiguo 28/05/2004, 02:05
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284


Cita:
Iniciado por KarlanKas
Creo, caricatos que va a seguir fallando. Porque no hay variable de más de una línea.


En un textarea existen más de una línea (se inserta \n) y también se tabula (\t)... y no sé que más controles puede haber en un texto...

... o no me enteré de lo que dices

He probado con html puro (y javascript) con este código:

Código PHP:
<html>
    <
head>
        <
script type="text/javascript">
            function 
mostrar() {
                var 
contenido document.forms.editor.texto.value.replace(/</g"<");
                var 
__v window.open('''__v''');
                
__v.document.open();
                
__v.document.writeln("<html><body><pre>" +
                
contenido +
                
"</pre></html></body>");
                
__v.document.close();
            }
        
</script>
    </head>
    <body>
        <form name="editor" action="javascript: void(false);" onsubmit="mostrar()" >
            <textarea rows=10 cols=50 name="texto" >
            </textarea>
            <br />
            <input type="submit" value="mostrar" />
        </form>
    </body>
</html> 
... al menos es lo que entendí en el mensaje.

Saludos
  #6 (permalink)  
Antiguo 28/05/2004, 02:23
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Vamos a ver ahora:

<?php
if (isset($texto)) {
$texto = ereg_replace("\n", "<br>", $texto);
$texto = ereg_replace("\r", "", $texto);


?>
<script language="javascript">
var a="<? echo $texto; ?>";
document.write(a);
</script>
<?
}
?>
<form>
<textarea name=texto></textarea>
<input type=submit value=Enviar>
</form>

(sacado de www.php.net/nl2br)
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #7 (permalink)  
Antiguo 28/05/2004, 02:26
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Me refería, caricatos a que si el valor de la variable en PHP es "hola soy Pepe\n¿qué tal estás?" al imprimirlo en el documento html pondrá:

a="hola soy Pepe
¿qué tal estás?"

Por eso hay que atacar el problema desde PHP y no en JS.

No pone el \n. Por eso sale el error. No sé si ahora me he explicado bien...

Un saludo!!
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #8 (permalink)  
Antiguo 28/05/2004, 03:48
Avatar de caricatos
Moderador
 
Fecha de Ingreso: abril-2002
Ubicación: Torremolinos (Málaga)
Mensajes: 19.607
Antigüedad: 22 años, 1 mes
Puntos: 1284
Hola otra vez:

Ya he comprendido...

mariogl84: Si no te sirve el código de KarlanKas (¡Hola )... tengo este que lo he probado y creo que funciona (al menos en unas pruebas que hice me fue bien...)

Código PHP:
<html>
<body>
<?php
    $datos 
$_POST["texto"];
    if (isset(
$datos)) {
?>
<pre id="texto" style="display: none; "><?php echo stripslashes($datos); ?>
</pre>
<script language="javascript">
var a=document.getElementById("texto").innerHTML;
//var a = "< ?php echo stripslashes($datos); ?>";
document.write("<pre>" + a + "</pre>");
</script>
<?
}
?>
</body>
</html>
El truco fue poner el valor del formulario en un tag "pre" oculto, y darle a la variable a el contenido del tag (innerHTML)...

También funcionó con un textarea oculto, pero quedaba bien el formato, pero si existiesen etiquetas dentro no se procesaban.

Saludos
  #9 (permalink)  
Antiguo 28/05/2004, 04:07
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Lo que no sé es por qué lo mete en una variable de JS antes de escribirlo?
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #10 (permalink)  
Antiguo 28/05/2004, 06:01
Avatar de mariogl84  
Fecha de Ingreso: noviembre-2002
Ubicación: Barcelona
Mensajes: 433
Antigüedad: 21 años, 6 meses
Puntos: 20
Bueno, he probado la solución de Karlankas (gracias también a ti, Caricatos), y funciona. Era el detallito del caracter \r lo que faltaba.



Cita:
Iniciado por KarlanKas
Lo que no sé es por qué lo mete en una variable de JS antes de escribirlo?
Este código os lo he puesto de ejemplo para explicaros mi problema, pero en realidad el texto se pasa a una serie de funciones javascript que trastean con él.

Muchas gracias a los dos por perder el tiempo conmigo

Mario
  #11 (permalink)  
Antiguo 28/05/2004, 06:13
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 5 meses
Puntos: 61
Mientras te sirva y nos ayude a aprender nunca será una pérdida de tiempo.
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
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 05:39.