Foros del Web » Programando para Internet » Javascript »

¿Que tiene de especial un textarea?

Estas en el tema de ¿Que tiene de especial un textarea? en el foro de Javascript en Foros del Web. Pues estoy intentando meter en un textarea n líneas pero siempre solo me muestra una usando este código... @import url("http://static.forosdelweb.com/clientscript/vbulletin_css/geshi.css"); Código Javascript : Ver original ...
  #1 (permalink)  
Antiguo 21/07/2011, 14:14
 
Fecha de Ingreso: abril-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 0
¿Que tiene de especial un textarea?

Pues estoy intentando meter en un textarea n líneas pero siempre solo me muestra una usando este código...

Código Javascript:
Ver original
  1. function buscarReg() {
  2.         if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  3.         var xml = xmlhttp.responseXML;
  4.         var gest = xml.getElementsByTagName('gestiones');
  5.         var textAreaGest = document.getElementById('gest');
  6.          for (i = 0; i < gest.length; i++) {
  7.                  var gestiones = gest[i].firstChild.data;
  8.                  textAreaGest.innerHTML = gestiones;
  9.                  document.write(gestiones);
  10.          }
  11.         }
  12. }

El 'document.write(gestiones);' me muestra correctamente todas las gestiones en la páguina pero al intentar meter lo mismo en el textarea solo muestra una línea. ¿Tengo que pasarle los valores al textarea por referencia y no usar su 'id'? al estilo...

<textarea>
<script type="text/javacript">

//usar algo javascript que me imprima aquí lo que quiero mostrar?

</script>
</textarea>
  #2 (permalink)  
Antiguo 21/07/2011, 14:17
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: ¿Que tiene de especial un textarea?

En principio cuando el texto llega a la derecha del todo la palabra baja al siguiente renglón, aunque realmente en el texto no haya ningún salto de línea. Si quieres un salto de línea explícito, quizás sirva usar \n, aunque no estoy seguro.
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #3 (permalink)  
Antiguo 21/07/2011, 14:40
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: ¿Que tiene de especial un textarea?

al no concatenar se van sobreescribiendo y lo que te muestra es la última. document.write no sobreescribe, de ahí que te muestre todo el contenido. simplemente has de concatenar
  #4 (permalink)  
Antiguo 21/07/2011, 14:47
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: ¿Que tiene de especial un textarea?

Cita:
Iniciado por IsaBelM
al no concatenar se van sobreescribiendo y lo que te muestra es la última. document.write no sobreescribe, de ahí que te muestre todo el contenido. simplemente has de concatenar
Soy tonto Entendí que el problema era que salía todo en una línea, no que sólo se veía una de las líneas.
Saludos!
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #5 (permalink)  
Antiguo 21/07/2011, 14:52
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: ¿Que tiene de especial un textarea?

Cita:
Iniciado por _cronos2 Ver Mensaje
Soy tonto Entendí que el problema era que salía todo en una línea, no que sólo se veía una de las líneas.
Saludos!
la verdad es que su explicación puede llevar a interpretarlo como lo hicistes
  #6 (permalink)  
Antiguo 21/07/2011, 16:07
 
Fecha de Ingreso: abril-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 0
Respuesta: ¿Que tiene de especial un textarea?

Muchas gracias por las respuestas. Amables como siempre.

Usando Komodo Edit, donde he recreado todo el funcionamiento con el código xml y el código javascript, he añadido esto y dentro del mismo Komodo me ha funcionado bien, cada registro en una línea...

Código Javascript:
Ver original
  1. textarea.innerHTML += gestiones + "\n";

También desde el mismo Komodo le digo que me lo abra en Firefox y también funciona bien, se ve todo el contenido de los registros dentro del textarea.
Cuando realizo esta misma operación pero en IE el textarea está vacío.

Lo más desconcertante es lo siguiente...
Cuando uso el mismo código en el archivo donde están todas las funciones javascript y que este es el archivo de producción no funciona, en algunos momentos me muestra caracteres raros, sin embargo la 'Consola de errores' de Firefox no muestra nada.
  #7 (permalink)  
Antiguo 22/07/2011, 05:45
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: ¿Que tiene de especial un textarea?

lo primero que se me ocurre es que no estás creando correctamente el objeto xmlhttp
Cita:
var xmlhttp = false;
if (window.XMLHttpRequest) { // Mozilla, Safari,...
xmlhttp = new XMLHttpRequest();

if (xmlhttp.overrideMimeType) {
xmlhttp.overrideMimeType('text/xml');
}
} else if (window.ActiveXObject) { // IE
try {
xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
} catch (e) {
try {
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
} catch (e) {}
}
}
return xmlhttp;
  #8 (permalink)  
Antiguo 22/07/2011, 09:07
 
Fecha de Ingreso: abril-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 0
Respuesta: ¿Que tiene de especial un textarea?

Muchas gracias IsaBelM estoy trabajando en esto que me dices... en cuanto tenga una respuesta le comento.
  #9 (permalink)  
Antiguo 22/07/2011, 10:44
 
Fecha de Ingreso: abril-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 0
Respuesta: ¿Que tiene de especial un textarea?

Esto es lo que he hecho...

Código Javascript:
Ver original
  1. function getXMLHTTP() {
  2.  
  3.         var xmlhttp = false;
  4.         if (window.XMLHttpRequest) { // Mozilla, Safari,...
  5.                 xmlhttp = new XMLHttpRequest();
  6.  
  7.                 if (xmlhttp.overrideMimeType) {
  8.                         xmlhttp.overrideMimeType('text/xml');
  9.                 }
  10.         } else if (window.ActiveXObject) { // IE
  11.                 try {
  12.                         xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
  13.                 } catch (e) {
  14.                         try {
  15.                                 xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
  16.                         } catch (e) {}
  17.                 }
  18.         }
  19.         return xmlhttp;
  20. }
  21.  
  22. function anadirReg(str, id) {
  23.         xmlhttp = getXMLHTTP();
  24.         xmlhttp.onreadystatechange = buscarReg;
  25.  
  26.         if (document.getElementById('ing').value.length == 0) {
  27.                 alert("Por favor, debe añadir la gestión realizada");
  28.                 document.getElementById('ing').focus();
  29.                 return 0;
  30.         }
  31.  
  32.         var gestion = new Date() + "/// " + document.getElementById('ing').value;
  33.         xmlhttp.open("POST","gestion_comercial.php?titular=" + str + '&gestion=' + gestion,true);
  34.         xmlhttp.send();
  35.         limpiarCampo('ing');
  36. }
  37.  
  38. function buscarReg() {
  39.         if(xmlhttp.readyState == 4 && xmlhttp.status == 200) {
  40.         var xml = xmlhttp.responseXML.documentElement;
  41.         var gest = xml.getElementsByTagName('gestiones');
  42.         var textArea = document.getElementById('gest');
  43.         //textArea.value = "";
  44.                 for (i = 0; i < gest.length; i++) {
  45.                          var gestiones = gest[i].firstChild.data;
  46.                          textArea.innerHTML += gestiones + "\n";
  47.                 }
  48. }


Que he logrado:
1- Ya me añade en el textarea la gestión.

Ahora solo me queda resolver algunos detalles, como:
1- En IE y Firefox siempre me añade la nueva gestión+las ya presentes en el textarea. O sea, está duplicando lo que hay en el textarea.
2- Me muestra la nueva gestión al final. Yo, mediante php le hice un 'ORDER BY <campo_fecha_ultima_actualizacion> DESC' y supongo que así mismo la "publica"
en XML el archivo php.
3- En IE me muesta el contenido en el textarea desordenado, en Firefox me muestra el contenido ordenado. Esto es, una línea para cada gestión.

Parte de mi archivo php y lo relacionado con la consulta y el XML, es lo siguiente...

Código PHP:
Ver original
  1. $result = mysql_query("SELECT EFID28 FROM titulares WHERE refer='$titular' ORDER BY timestamp_last_change DESC");
  2.  
  3. while ($row = mysql_fetch_array($result)) {
  4.        $valores[] = $row['EFID28'];
  5. }
  6.  
  7. $xml .= "<?xml version=\"1.0\" encoding=\"UTF-8\"?>\n";
  8. $xml .= "<informacion>\n";
  9. for($x=0 ; $x<count($valores) ; $x++) {
  10.      $xml .= "<gestiones>" . $valores[$x] . "</gestiones>\n";
  11. }
  12. $xml .= "</informacion>";
  13. echo $xml;
  14.  
  15. mysql_close($link);
  16. ?>

Según experiencia... ¿es mejor generar el contenido XML en un archivo aparte o directamente obtenerlo del archivo php?
  #10 (permalink)  
Antiguo 22/07/2011, 14:07
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: ¿Que tiene de especial un textarea?

1 y 2 has de eliminar la gestión anterior
Cita:
var textArea = document.getElementById('gest');
textArea.innerHTML = '';
3 en ie el salto de línea se representa
Cita:
\r\n
tu última pregunta. como lo haces está bien, salvo que estás consumiendo recursos del servidor que puedes evitarlo haciendo unos pequeños cambios

Cita:
echo '<?xml version="1.0" encoding="UTF-8"?>';?>
<informacion>
<?php
for($x=0 ; $x<count($valores) ; $x++) {
?>
<gestiones><?php echo $valores[$x]?></gestiones>
<?php
}
?>
</informacion>
a ver si no me equivoco
  #11 (permalink)  
Antiguo 22/07/2011, 14:30
Avatar de _cronos2
Colaborador
 
Fecha de Ingreso: junio-2010
Mensajes: 2.062
Antigüedad: 13 años, 10 meses
Puntos: 310
Respuesta: ¿Que tiene de especial un textarea?

A todo esto... ¿por qué estamos usando innerHTML? ¿No será más "semántico" usar value?
Saludos (:
__________________
" Getting older’s not been on my plans
but it’s never late, it’s never late enough for me to stay. "
Cigarettes - Russian Red
  #12 (permalink)  
Antiguo 23/07/2011, 10:04
 
Fecha de Ingreso: abril-2011
Mensajes: 41
Antigüedad: 13 años
Puntos: 0
Respuesta: ¿Que tiene de especial un textarea?

Listo, quedó muy bien.

Muchas gracias, una flor para ti.
  #13 (permalink)  
Antiguo 23/07/2011, 22:26
Avatar de Artificium  
Fecha de Ingreso: enero-2011
Mensajes: 492
Antigüedad: 13 años, 3 meses
Puntos: 81
Respuesta: ¿Que tiene de especial un textarea?

Cita:
Iniciado por _cronos2 Ver Mensaje
A todo esto... ¿por qué estamos usando innerHTML? ¿No será más "semántico" usar value?
Saludos (:
En JavaScript no hay semántica como en HTML, el problema con innerHTML es que no es estándar en HTML 4, ni XHTML 1.0. aunque todos los navegadores "decentes" lo implementan (y los no tan indecentes como I.E. 6); value si es estándar y en este caso no hay necesidad de usar innerHTML porque el contenido de un textarea no puede estar formateado con HTML, aunque funcione innerHTML con JavaScript basta con value y en este caso es recomendable. Si se quisiera insertar un contenido generado con JavaScript y que tenga formato HTML en un elemento HTML pues tendríamos las dos opciones: insertarlo usando DOM (que es un poco complicado) o usar innerHTML que no es estándar pero que si funciona casi siempre.

Etiquetas: especial, html
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 23:23.