Foros del Web » Programando para Internet » Javascript »

Salvar comillas con innerHTML

Estas en el tema de Salvar comillas con innerHTML en el foro de Javascript en Foros del Web. Hola a todos. Estoy haciendo una web que tiene un sencillo foro. El foro, tiene para cada post, un boton para citar a ese post. ...
  #1 (permalink)  
Antiguo 27/09/2011, 11:46
 
Fecha de Ingreso: febrero-2010
Mensajes: 22
Antigüedad: 14 años, 9 meses
Puntos: 0
Salvar comillas con innerHTML

Hola a todos.

Estoy haciendo una web que tiene un sencillo foro. El foro, tiene para cada post, un boton para citar a ese post. Cuando se pincha el botón en cuestión, justo encima del TEXTAREA para escribir un mensaje en el foro aparece un DIV con el texto del mensaje citado.

Para escribir el mensaje citado en dicho DIV, hago:

Código Javascript:
Ver original
  1. document.getElementById('respondiendo').innerHTML="<P>"+texto_mensaje+"</P>";

Siendo texto_mensaje lógicamente la variable que contiene el texto del post a citar.

El problema está cuando ese texto tiene comillas, entonces sólo escribe hasta que aparece la primera comilla, el resto no aparece. ¿Cómo puedo salvar las comillas?

Un saludo
  #2 (permalink)  
Antiguo 27/09/2011, 12:44
Avatar de Maganius  
Fecha de Ingreso: septiembre-2010
Mensajes: 310
Antigüedad: 14 años, 1 mes
Puntos: 10
Respuesta: Salvar comillas con innerHTML

Puedes replazar las comillas escapandolas para que no se te corte la consulta.

frase = texto_mensaje.replace(/[']/g,"\'");
alert(frase);

No lo probe supongo que funcionara
  #3 (permalink)  
Antiguo 27/09/2011, 12:57
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 4 meses
Puntos: 1012
Respuesta: Salvar comillas con innerHTML

es correcto lo que te exponen. también puedes reemplazarla por su entidad html
  #4 (permalink)  
Antiguo 27/09/2011, 19:24
Avatar de zerokilled
Javascripter
 
Fecha de Ingreso: abril-2009
Ubicación: Isla del Encanto, La Borinqueña [+>==]
Mensajes: 8.050
Antigüedad: 15 años, 6 meses
Puntos: 1485
Respuesta: Salvar comillas con innerHTML

buenas,
me pregunto si no sería más sencillo clonar el elemento y pegarlo en el div. a no ser que el texto citado sea parte del mensaje a redactar por el usuario.
__________________
la maldad es una virtud humana,
y la espiritualidad es la lucha del hombre contra su maldad.
  #5 (permalink)  
Antiguo 28/09/2011, 08:22
 
Fecha de Ingreso: febrero-2010
Mensajes: 22
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Salvar comillas con innerHTML

Pues he probado poniéndolo de todas formas posibles, y no funciona, no se si tengo algun error en la sintaxis. He probado:

texto_mensaje = texto_mensaje.replace(/["]/g,"\'");
texto_mensaje = texto_mensaje.replace(/\"/g," ");
texto_mensaje = texto_mensaje.replace(/\"/g,"&quot;");

... e incluso ya otras sin lógica, por probar, pero ninguna funciona. A ver si so os acurre algo para echarme un cable, que empiezo a desesperarme, no puedo avanzar por esta tontería.
  #6 (permalink)  
Antiguo 28/09/2011, 09:23
 
Fecha de Ingreso: abril-2011
Mensajes: 1.342
Antigüedad: 13 años, 6 meses
Puntos: 344
Respuesta: Salvar comillas con innerHTML

Vas a tener que darnos más código para poder ver exactamente de donde viene el problema.
  #7 (permalink)  
Antiguo 03/10/2011, 11:56
 
Fecha de Ingreso: febrero-2010
Mensajes: 22
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Salvar comillas con innerHTML

Pues el código HTML que interviene en el asunto sería:

Código HTML:
Ver original
  1. <DIV id="responder">
  2.     <P class="dijo">Responder citando a:</P>
  3.     <DIV id="respondiendo">
  4.     </DIV>
  5. </DIV>

y el javascript...

Código ASP:
Ver original
  1. texto_mensaje=texto_mensaje.replace(/\n/g,"<BR>");
  2. frase = texto_mensaje.replace(/["]/g,"\"");
  3. document.getElementById('respondiendo').innerHTML="<P>"+texto_mensaje+"</P>";
  4. document.getElementById('responder').style.display='block';
  #8 (permalink)  
Antiguo 03/10/2011, 12:48
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 4 meses
Puntos: 1012
Respuesta: Salvar comillas con innerHTML

no sería
Cita:
.innerHTML="<P>"+texto_mensaje+"</P>";
sino
Cita:
.innerHTML="<P>"+frase+"</P>";
  #9 (permalink)  
Antiguo 03/10/2011, 14:58
 
Fecha de Ingreso: febrero-2010
Mensajes: 22
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Salvar comillas con innerHTML

Ya, eso no es, eso es porque esa linea la he copia del mensaje anterior. Eso está bien puesto en la web. Por eso no te preocupes ;)
  #10 (permalink)  
Antiguo 03/10/2011, 15:31
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 16 años, 4 meses
Puntos: 1012
Respuesta: Salvar comillas con innerHTML

si ese no es el problema, el js no tiene ningún problema. puedes sobreescribir la variable tantas veces como quieras
Cita:
var texto_mensaje = 'un texto con "entrecomillado" que serán reemplazadas\notro texto con "entrecomillado" que serán reemplazadas';
texto_mensaje=texto_mensaje.replace(/\n/g,"<BR>");
texto_mensaje = texto_mensaje.replace(/["]/g,"\"");
document.getElementById('respondiendo').innerHTML= "<P>"+texto_mensaje+"</P>";
  #11 (permalink)  
Antiguo 10/10/2011, 06:24
 
Fecha de Ingreso: febrero-2010
Mensajes: 22
Antigüedad: 14 años, 9 meses
Puntos: 0
Respuesta: Salvar comillas con innerHTML

jummmm... acabo de darme cuenta que el problema viene de antes pero sigo sin poder solucionarlo.

La función completa de javascript donde pensaba que estaba el problema es esta:

Código Javascript:
Ver original
  1. function responder_foro(id_mensaje, texto_mensaje)
  2.     {
  3.         mensaje_foro.respuesta.value=id_mensaje;
  4.         texto_mensaje = texto_mensaje.replace(/["]/g,"\"");
  5.         texto_mensaje=texto_mensaje.replace(/\n/g,"<BR>");
  6.         document.getElementById('respondiendo').innerHTML="<P>"+texto_mensaje+"</P>";
  7.         document.getElementById('responder').style.display='block';
  8.     }

El parámetro llamado "texto_mensaje" que recibe, viene de un campo tipo hidden que contiene dicho texto...

Código HTML:
Ver original
  1. <INPUT type="hidden" name="texto_mensaje<?php echo $i; ?>" value="<?php echo $fila3['texto_mensaje_foro']; ?>">

...donde $fila3['texto_mensaje_foro'] ha sido extraido de la BD.

Puse el campo hidden como tipo text y me di cuenta que es ahi donde está el problema. Es ahí donde no me escribe ya todo lo que hay a partir de las primeras comillas, ni las primeras comillas tampoco, es decir:

Si el texto es este: Probando "esto esta entre comillas"...
... me escribe en el campo: Probando

Comprobé que en la base de datos está el texto completo con las comillas, y que la pagina que guardaba ese valor en la BD pasaba antes el addslashes a la variable.

Aún asi he probado a poner addslashes también cuando escribo el texto en el value del campo:

Código HTML:
Ver original
  1. <INPUT type="text" name="texto_mensaje<?php echo $i; ?>" value="<?php echo addslashes($fila3['texto_mensaje_foro']); ?>">

Pero entonces pasa lo siguiente...

Si el texto es este: Probando "esto esta entre comillas"...
... me escribe en el campo: Probando \

A ver si alguien sabe que estoy haciendo mal, que me está desesperando ya bastante este problema.

PD: Igual habia que cambiarlo de foro ya que este problema ha dejado de ser de javascript...
  #12 (permalink)  
Antiguo 10/10/2011, 06:41
Avatar de Panino5001
Me alejo de Omelas
 
Fecha de Ingreso: mayo-2004
Ubicación: -34.637167,-58.462984
Mensajes: 5.148
Antigüedad: 20 años, 5 meses
Puntos: 834
Respuesta: Salvar comillas con innerHTML

Si tu problema viene de php deberías ensayar una solución en ese lenguaje. Fijate si esto te da una idea:
Código PHP:
<?php
function js_encode($s){
    
$texto='';
    
$lon=strlen($s);
    for(
$i=0;$i<$lon;++$i){
        
$num=ord($s[$i]);
        if(
$num<16$texto.='\x0'.dechex($num);
        else 
$texto.='\x'.dechex($num);
    }
    return 
$texto;
}
$texto=utf8_decode('Este es un texto que tiene
saltos de línea y "comillas". Veremos cómo se ve en javascript.'
);
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title>Untitled Document</title>
</head>
<body>
<div id="ejemplo"></div>
<script type="text/javascript">
document.getElementById('ejemplo').innerHTML='<?php echo js_encode($texto?>';
</script>
</body>
</html>
Si mirás el código fuente resultante verás cómo realiza el escape la función php. (utf8_decode puede obviarse si tu servidor codifica adecuadamente -no es mi caso-).

Última edición por Panino5001; 10/10/2011 a las 06:47

Etiquetas: comillas, html, innerhtml, salvar, botones
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 12:26.