Foros del Web » Programando para Internet » Javascript »

problema con arreglo y salto de línea

Estas en el tema de problema con arreglo y salto de línea en el foro de Javascript en Foros del Web. Hola a todos, Mi problema es el siguiente: tengo un formulario que contiene un campo con un textarea en el que el usuario introduce información ...
  #1 (permalink)  
Antiguo 26/01/2006, 09:13
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
problema con arreglo y salto de línea

Hola a todos,


Mi problema es el siguiente: tengo un formulario que contiene un campo con un textarea en el que el usuario introduce información que guardo en un campo de la BD (MySQL). Esta información la uso para llenar un arreglo javascript, el problema se presenta cuando el usuario introduce información con saltos de línea. He intentado eliminar los saltos de línea usando con php pero no lo logro. Si alguien sabe como puedo solucionar el problema se lo agradeceria mucho.



Gracias
  #2 (permalink)  
Antiguo 27/01/2006, 09:50
 
Fecha de Ingreso: diciembre-2005
Ubicación: Ciudad de México
Mensajes: 45
Antigüedad: 18 años, 4 meses
Puntos: 1
Yo te podría recomendar que restringieras tu textarea para no permitir que se introduzcan los saltos de línea, para esto puedes introducir una función en el evento onkeypress, utilizando event.which o window.event.keycode para el IE.
  #3 (permalink)  
Antiguo 27/01/2006, 12:07
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
hola vvblond,

Gracias por tu recomendación pero no puedo hacer esto :(
No se si la solución sea via javascript o php, lo cierto es que en ninguno de los dos foros conseguí algo que me ayudara.
  #4 (permalink)  
Antiguo 28/01/2006, 01:18
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
Exclamación

porque no planteas mejor tu problema igual y con la creacion de un objeto dom se pueda hacer lo que deseas.

saludos
__________________
gerardo
  #5 (permalink)  
Antiguo 28/01/2006, 09:08
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
Cita:
Iniciado por mycs
Hola a todos,


Mi problema es el siguiente: tengo un formulario que contiene un campo con un textarea en el que el usuario introduce información que guardo en un campo de la BD (MySQL). Esta información la uso para llenar un arreglo javascript, el problema se presenta cuando el usuario introduce información con saltos de línea. He intentado eliminar los saltos de línea usando con php pero no lo logro. Si alguien sabe como puedo solucionar el problema se lo agradeceria mucho.



Gracias
fijate esto:

Cita:
<html>
<head>
<script>
function depurar(t){
t.value=t.value.replace(/\r\n/,". ");
}
</script></head>
<body>
<textarea name="t" cols="20" rows="20" onkeyup="depurar(this)"></textarea>
</body>
</html>
en este caso, reemplaza los saltos de linea por un . seguido de un espacio. Si lo que necesitas es que elimine ese salto de lines solamente dejalo vacio
Cita:
t.value=t.value.replace(/\r\n/,"");

No se de la implemntación que necesitas, lo que si es que algun "pillin" te puede deshabilitar javascript e ingresar lo que quiera.

Las expresiones regulares se pueden utilizar tanto para PHP como para ASP, de esa forma podes además de hacerlo mediante JS , tambien implementarlo en el lado del servidor.

saludos
__________________
by Capitán Buscapina
.
  #6 (permalink)  
Antiguo 31/01/2006, 09:46
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola Cap.Buscapina,

Gracias por la sugerencia, el problema es que el usuario necesita que haya saltos de línea en las noticias que escribe. Por esto no puedo guardar en la BD las mismas sin el salto porque de hacerlo así no tengo manera de saber cuando es punto y aparte o punto y seguido.

Intente aplicar la función replace cuando estoy llenado el arreglo pero tampoco funciona :S sigo teniendo los saltos de línea en el arreglo.

Si tienes alguna otra sugerencia de verdad te lo agradeceria. No habia tenido tiempo de revisar la página hasta hoy porque me dedique hacer otras cosas a ver si se me ocurria algo pero sigo igual
  #7 (permalink)  
Antiguo 31/01/2006, 10:01
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
hola,

no llego a comprender bien el problema pero si es lo que supongo podrías hacer que cuando recibo los datos del formulario, reemplazo los saltos de linea por "<br>", claro, del lado del servidor.

en ASP sería:

Cita:
noticias= replace(noticias,vbCrLf,"<br>")
__________________
by Capitán Buscapina
.
  #8 (permalink)  
Antiguo 31/01/2006, 11:50
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
Cap.Buscapina me explico mejor,

Tengo un formulario donde el usuario introduce una noticia
Código HTML:
<tr bgcolor="#FFFFFF">
    <td class="texto">Contenido</td>
    <td class="texto_rojopq">
<textarea name="txtContenido" cols="40" class="texto_combos"></textarea>
</td>
</tr> 
Ese txtContenido lo guardo en la BD (MySQL).
Luego genero un arreglo JavaScript con los datos de las noticias para que el usuario edite y modifique en caso de que así lo requiera. Al llenar el arreglo con los datos guardados en la BD me da error porque los mismos contienen saltos de línea. En el siguiente código muestro el llenado del arrelgo JS (primero hago la consulta a la BD y guardo los resultado en un arreglo php que en este caso es $varArr)

Código HTML:
<script>
var arrNoticia = new Array(<?=$long?>);	
<?
	for($i = 0; $i < $long; $i++)
	{
		?>arrNoticia[<?=$i?>] = Array(5);<?
		for ($j=0; $j<6; $j++)
		{
			?>arrNoticia[<?=$i?>][<?=$j?>] = '<?=$varArr[$i][$j]?>';<?						
		}
	}	
?>
</script> 
Espero haberme explicado y que me puedan ayudar :(

Gracias!!
  #9 (permalink)  
Antiguo 31/01/2006, 15:19
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
perdona mi ignorancia

Pero aun no entiendo el porque quieres usar un arreglo
si despues de una consulta de sql lo imprimes tal y como
se guardo, el detalle seria que te respete los
saltos de linea y eso seria con el comando
nl2br.

saludos y disculpa que no te entienda
__________________
gerardo
  #10 (permalink)  
Antiguo 31/01/2006, 17:58
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
según me parece, la solución viene por el lado de PHP mas que por el lado de javascript.

Como lo sugiere chalchis, no se que beneficios te trae el almacenarlos en un arreglo, pero tendrás tus razones.

Saludos
__________________
by Capitán Buscapina
.
  #11 (permalink)  
Antiguo 01/02/2006, 06:27
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola,

La razón por la cual uso el arreglo es que en esa página hago una consulta sobre las noticia y las listo para que el usuario las modifique. Para que este proceso sea más rápido sin tener que hacer submit utilizó el arreglo. De esta manera el usuario hace clic sobre un enlace hace busca el elemento en el arreglo y coloca los valores de esa noticia en un formulario en la misma página para que este haga las modificaciones pertinenetes.

No se si me explico pero ese es el caso. Creo que tendre que hacer el submit porque no lo he podido solucionar por el lado de javascript y tampoco por el lado de php .

Gracias de todas formas por intentar ayudarme.
  #12 (permalink)  
Antiguo 01/02/2006, 10:32
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
lo que puedes hacer

Es efectivamente un array pero en cada posicion del array
iria todo el texto de cada noticia, tendrias que hacer un precargado
antes de mostrarte el listado de noticias en caso de que muestres todas
al entrar, a la pagina donde te muestra el listado de todas las noticias

tendrias que hacer una consulta de select general de la tabla de noticias
y el array que te arroja debes almacenarlo en un array de javascript
<html>
<head>
<script TYPE="text/javascript" language="JavaScript">
function precarga()
{
var miarray = new Array();
<?
consulta sql previamente
digamos que el arreglo generaro se llama $noti

$tot=count($noti);
for($x=0;$x<$tot;$x++)
{
echo 'miarray['.$x.']'."=".'"'.$noti[$x].'";'."\n";
}

?>
}

</script>
<head>
<body onload="precarga()">
<!--aqui imprime tu listado de noticias -->
</body>
</html>

ahora habria que ver como mostrarias el contenido al seleccionar una
de las noticas y relacionarlo con el arreglo generado en javascript

espero que sirva de algo
__________________
gerardo
  #13 (permalink)  
Antiguo 01/02/2006, 11:01
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
Chalchis es precisamente eso lo que hago. Realizo la consulta y almaceno el contenido de las noticias en un arreglp PHP que luego paso a otro Javascript y es aqui donde tengo el problema de salto de línea al encontrar una noticia que lo contenga. Ya que el arreglo javascript no puede tener saltos de línea. Cuando no hay saltos todo funciona perfectamente, no tengo ningún problema con el arreglo. Al introducir una noticia con salto simplemente no reconoce el arreglo. Viendo el codigo fuente me doy cuenta de que el arreglo esta más este contiene el salto de líne de esa noticia

Si se te ocurre algo y me puedes ayudar de alguna otra forma te lo agradeceria mucho
  #14 (permalink)  
Antiguo 01/02/2006, 11:33
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
saltos en un array en javascript

entonces el problema real es introducir texto con saltos en un array en javascript
__________________
gerardo
  #15 (permalink)  
Antiguo 01/02/2006, 11:41
Avatar de chalchis  
Fecha de Ingreso: julio-2003
Mensajes: 1.773
Antigüedad: 20 años, 9 meses
Puntos: 21
a ver checa esta liga

http://www.desarrolloweb.com/articul....php?manual=20
__________________
gerardo
  #16 (permalink)  
Antiguo 01/02/2006, 17:58
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
creo que te puede servir.

Es solo como ejemplo, y basicamente lo que hace es almacenar en un array el texto introducido (en tu caso lo traerías de una BD) reemplazando el salto de linea por otro caracter, y luego al momento de mostrarlo, lo reemplaza nuevamente por el salto de linea en cuestion.

Cita:
<html>
<head>
<script>
var noticias = new Array();
function almacenar(f){
noticias[noticias.length]=f.noticia.value.replace(/\r\n/,"[br]");
f.noticia.value=""
f.Almacenar.value="Almacenar en la posicion "+noticias.length;
text="<a href=# onclick=editar('"+noticias.length+"')>"+noticias[noticias.length-1].replace("[br]"," ").slice(0,20)+"</a><br>";
document.getElementById('lista').innerHTML+=text;
}
function editar(n){
document.forms['fff']['noticia'].value=noticias[n-1].replace("[br]","\r\n");
}
</script></head>
<body>
<form name="fff"><textarea name="noticia" cols="20" rows="20" ></textarea>
<input name="Almacenar" type="button" value="Almacenar en la posicion 1" onclick="almacenar(this.form)">
<br>
Editar Noticias Almacenadas:<br>
<span id="lista"></span>
</form></body>
</html>

saludos
__________________
by Capitán Buscapina
.
  #17 (permalink)  
Antiguo 03/02/2006, 08:18
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola Cap.Buscapina,

Muchas gracias por tu sugerencia me sirvio de mucha ayuda para solucionar el problema con el arreglo. Hice exactamente eso pero usando las funciones str_replace y nl2br de PHP, más la función editar que colocaste



Gracias!!!!!!!!!!!!!!!!

  #18 (permalink)  
Antiguo 03/02/2006, 09:25
Avatar de Cap.Buscapina  
Fecha de Ingreso: octubre-2004
Ubicación: Argentina
Mensajes: 836
Antigüedad: 19 años, 6 meses
Puntos: 4
ok, de nada.


costó pero salió.


saludos
__________________
by Capitán Buscapina
.
  #19 (permalink)  
Antiguo 06/02/2006, 08:33
Avatar de Oscar_RIcardo  
Fecha de Ingreso: febrero-2006
Mensajes: 3
Antigüedad: 18 años, 2 meses
Puntos: 0
Buen dia, me aclararias un poco....

Cita:
Iniciado por mycs
Hola Cap.Buscapina,

Muchas gracias por tu sugerencia me sirvio de mucha ayuda para solucionar el problema con el arreglo. Hice exactamente eso pero usando las funciones str_replace y nl2br de PHP, más la función editar que colocaste



Gracias!!!!!!!!!!!!!!!!

Hola 'mycs' la verdad tengo el mismo problema tuyo con un scroll de noticias que lee desde MYSQL y las muestra con JS pero no entendí la ultima parte tu me podrias explicar como solucionaste el problema en PHP para armar el arreglo de JavaScript
Gacias de antemano.
  #20 (permalink)  
Antiguo 09/02/2006, 06:49
 
Fecha de Ingreso: enero-2005
Mensajes: 47
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola Oscar,

Para solucinar el problema hice los siguiente:

1. Antes de guardar el texto de la noticia en la BD aplique trim y nl2br.
2. Para llenar el arreglo javascript:
Código:
$varTexto = str_replace("<br />", "[br]", $varArr[$i][$j]);	
$varTexto = str_replace("\r", "", $varTexto);
$varTexto = str_replace("\n", "", $varTexto);
?>arrNoticia[<?=$i?>][<?=$j?>] = '<?=$varTexto?>';<?
3. Para mostrar la noticia en el textarea usando el arreglo antes mencionado:
Código:
document.frmAgregar.txtResumen.value = arrNoticia[posicion_arreglo][4].replace(/\[br\]/g,"\r\n");

Espero que esto te ayude y disculpa que no te respondí antes....tenia días sin entrar a la página.


Saludos
  #21 (permalink)  
Antiguo 10/02/2006, 08:54
Avatar de Oscar_RIcardo  
Fecha de Ingreso: febrero-2006
Mensajes: 3
Antigüedad: 18 años, 2 meses
Puntos: 0
Ok, gracias.

Me funciono bien..en cuanto al JS no soy muy bueno en eso..la solucion que opte fue por no agregarle saltos de linea para no dañar el SCROLL pero funciona perfectamente.
GRACIAS
  #22 (permalink)  
Antiguo 01/04/2008, 13:14
 
Fecha de Ingreso: enero-2007
Mensajes: 10
Antigüedad: 17 años, 3 meses
Puntos: 0
Re: problema con arreglo y salto de línea

Saludos amigos, el problema que planteo es uno muy similar.

De seguro conocen FCKEditor (www.fckeditor.com). Yo lo implementé en mi web, y anda muy bien. ¿Entonces cuál es el problema? Ejem... si claro, yo tengo unas cuántas noticias cargadas en una base de datos a las cuales luego mostraria en este estupendo editor. Mediante la siguiente sentencia...

<script type="text/javascript">
<!--
var oFCKeditor = new FCKeditor('nota') ;
oFCKeditor.BasePath = './editor/' ;
oFCKeditor.Height = 300 ;
oFCKeditor.Value = 'Contenido por defecto';
oFCKeditor.Create() ;
//-->
</script>

Cargo el editor con un texto por defecto (Contenido por defecto). Hasta ahora bien, pero ahora yo cambio

oFCKeditor.Value = 'Contenido por defecto';

Por

oFCKeditor.Value = '<?=$nota?>';

Y javascript dice: Constante de cadena sin terminar. Y es obvio, ya que $nota está llamando a una noticia con saltos de carro y lo que tendría que quedar:

oFCKeditor.Value = 'Una noticia muy bonita. Editor por FCK';

Queda

oFCKeditor.Value = 'Una noticia muy bonita.
Editor por CFK';

Lo cual no es permitido.

¿Solución? Eliminar (reemplazar) esos "saltos de linea invisibles" con PHP para que la variable lo lea todo en una linea. Espero hayan entendido. Muchas gracias.

  #23 (permalink)  
Antiguo 01/04/2008, 14:27
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Re: problema con arreglo y salto de línea

El mensaje original es de hace más de 2 años. Por favor, no reviváis temas tan antiguos.

Saludos,
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 19:44.