Foros del Web » Programando para Internet » Javascript »

Lanzar función al editar un grupo de inputs

Estas en el tema de Lanzar función al editar un grupo de inputs en el foro de Javascript en Foros del Web. Hola a todos!, tengo un código de este estilo: Código HTML: <form action= "bla.php" method= "post" > <div id= "grupo1" > <input type= "file" name= ...
  #1 (permalink)  
Antiguo 03/10/2011, 14:30
 
Fecha de Ingreso: febrero-2009
Mensajes: 202
Antigüedad: 15 años, 2 meses
Puntos: 3
Lanzar función al editar un grupo de inputs

Hola a todos!,
tengo un código de este estilo:

Código HTML:
<form action="bla.php" method="post">

<div id="grupo1">
<input type="file" name="archivo 1">
<input type="text" name="texto 1">
</div>

<div id="grupo2">
<input type="file" name="archivo 2">
<input type="text" name="texto 2">
</div>

<input type="submit" value="Send">

</form> 
Lo que yo quiero es que onchange cualquier valor de un input del grupo 1 se ejecute X función. Probé poniendo <div id="grupo1" onchange="funcion()"> pero no funciona en Chrome... No se me hace práctico ponerle onchange a cada input, si hay una opción mejor sería genial...

¿Alguna idea?


Gracias!!
  #2 (permalink)  
Antiguo 03/10/2011, 15:34
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Lanzar función al editar un grupo de inputs

usar el método getElementsByTagName() y addEventListener()
  #3 (permalink)  
Antiguo 03/10/2011, 16:12
 
Fecha de Ingreso: febrero-2009
Mensajes: 202
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Lanzar función al editar un grupo de inputs

Cita:
Iniciado por IsaBelM Ver Mensaje
Gracias!, estoy medio verde todavía en Javascript :) Probé algo así:

Código Javascript:
Ver original
  1. function load(){
  2. var x = document.getElementsByTagName("input");
  3. x.addEventListener("onChange", agregar, false);
  4. }
  5. document.addEventListener("DOMContentLoaded", load, false);

"agregar" es el nombre de la función. Pero no me funcionó... Le puse un alert a la función agregar y nada... ¿la estoy llamando mal?

Gracias por la ayuda!
  #4 (permalink)  
Antiguo 04/10/2011, 04:25
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Lanzar función al editar un grupo de inputs

en el tipo de evento has puesto onChange, cuando ha de ser change
  #5 (permalink)  
Antiguo 04/10/2011, 11:40
 
Fecha de Ingreso: febrero-2009
Mensajes: 202
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Lanzar función al editar un grupo de inputs

Cita:
Iniciado por IsaBelM Ver Mensaje
en el tipo de evento has puesto onChange, cuando ha de ser change
La consola me dice "x.addEventListener is not a function"... Alguna idea?

Gracias!

Última edición por Ozone; 04/10/2011 a las 12:01
  #6 (permalink)  
Antiguo 04/10/2011, 12:27
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Lanzar función al editar un grupo de inputs

con getElementsByTagName() lo que obtienes es una colecciones de los elementos, en este caso input, que hay en el documento. has de usar un ciclo para saber sobre que elemento se ha realizado la acción
Cita:
for(var i = 0; x.length; i++) {
x[i].addEventListener("change", agregar, false);
}
  #7 (permalink)  
Antiguo 04/10/2011, 15:14
 
Fecha de Ingreso: febrero-2009
Mensajes: 202
Antigüedad: 15 años, 2 meses
Puntos: 3
Respuesta: Lanzar función al editar un grupo de inputs

Perfecto, genial IsaBelM, gracias!
Una cosa más. Necesito tomar el id o name del input cuyo valor cambió (change) para mandarlo como parámetro de la función del eventListener... El tema de parámetro encontré como hacerlo, pero para obtener el name o id no se me ocurre como... Alguna idea?

Código Javascript:
Ver original
  1. function load(){
  2.     var x = document.getElementsByTagName("input");
  3.     for(var i = 0; x.length; i++) {
  4.         x[i].addEventListener("change", function(){ agregar(parametro)}, false);
  5.     }
  6. }
  7. document.addEventListener("DOMContentLoaded", load, false);

En donde dice parámetro tendría que ir el id o el name del input que está desencadenando el script.

Gracias!!
  #8 (permalink)  
Antiguo 05/10/2011, 04:15
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Lanzar función al editar un grupo de inputs

this.id o this.name

Etiquetas: evento, funcion
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:31.