Foros del Web » Programando para Internet » Javascript »

Suma de campos en formulario dinamico

Estas en el tema de Suma de campos en formulario dinamico en el foro de Javascript en Foros del Web. Wenas, tengo un formulario para que el jefe de personal de la empresa meta las horas extras que han echado los trabajadores durante el mes, ...
  #1 (permalink)  
Antiguo 20/08/2004, 05:32
 
Fecha de Ingreso: octubre-2003
Mensajes: 44
Antigüedad: 20 años, 6 meses
Puntos: 3
Suma de campos en formulario dinamico

Wenas, tengo un formulario para que el jefe de personal de la empresa meta las horas extras que han echado los trabajadores durante el mes, con lo que genero dinamicamente un formulario con su nombre, dni, 31 celdas correspondientes a los dias del mes y un campo total horas, readonly, para ver las horas totales conforme van introduciendo datos. Si en un departamento tengo 5 empleados, me genera 5 filas con tantos campos como he indicado antes. La forma de vincular dias-horas con trabajador, la pongo de la siguiente manera (en php).

<input name="<? echo $campos[3]."-01";?>" type="text" id="d1" size="1" maxlength="2" onKeyUp="fncSumar()">

(Observar el name del input, ya que hay uno para cada dia, -02,-03,-04, todos ellos concatenados con el dni del trabajador).

Me seguís?.

Bien, pues mi problema es que la primera fila de inputs me la suma bien llamando a la funcion fncSumar, pero las demas no hace na de ná, supongo que pierde las referencias de los id, pero estoy atascado, no se seguir.

La funcion fncSumar ( de soniagrande y compañia) la pongo aquí con permiso de ellos.

<script>
function fncSumar(){
var n1 = Number(document.getElementById("d1").value);
var n2 = Number(document.getElementById("d2").value);
document.getElementById("thac").value = n1+n2
}
</script>

Ayuda, please!!
Gracias de antemano.
Salu2.
Aupa ALBA!!
__________________
EduLopez.
Salu2 desde Albacete
  #2 (permalink)  
Antiguo 20/08/2004, 08:31
Avatar de claray  
Fecha de Ingreso: agosto-2004
Ubicación: ahora... en Caracas
Mensajes: 345
Antigüedad: 19 años, 8 meses
Puntos: 0
Bueno si entiendo bien cada linea de la tabla tiene un campo como el que muestras en donde el nombre es formado dinamicamente y el "ID" es fijo, pues creo que el probelma esta alli, con los ID que se deben repetir en cada fila, para solucionarlo hazlo que sean dinamicos tambien (igual que el name) y sumas todos los que correspondan al empleado (dni?). o sea si el name de el input es "dni-01" el ID debiera ser "dni-id1", con lo cual no es dificil encontrar todos los campos asociados al dni.

espero haberme explicado, sino.. replica...

suerte
__________________
:pirata: El arte de desarrollar es dejar que los otros lo hagan
  #3 (permalink)  
Antiguo 20/08/2004, 10:06
Avatar de KarlanKas
Moderador extraterrestre
 
Fecha de Ingreso: diciembre-2001
Ubicación: Madrid
Mensajes: 6.987
Antigüedad: 22 años, 4 meses
Puntos: 61
Prueba con esto. Es un ejemplillo hecho a mano de lo que será tu página. Con el script te servirá con cualquiera:
Código HTML:
<html>
<head>
	<title>Untitled</title>
	<script>
function suma(este,formulario){
	if(!isNaN(formulario.elements[este].value)){
		nombre=este.split("-")[0];
		var total=0;
		for(a=1;a<32;a++){
			aa=(a<10)?"0"+a:a;
			nombre2=nombre+"-"+aa;
			valor=Number(formulario.elements[nombre2].value);
			total+=valor;
		}
		formulario.elements[nombre+"-total"].value=total;
	}
	else{
	formulario.elements[este].value=""
	}
}
	</script>
</head>

<body>
<form name="formulario">

<table>
<tr>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-01" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-02" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-03" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-04" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-05" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-06" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-07" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-08" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-09" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-10" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-11" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-12" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-13" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-14" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-15" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-16" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-17" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-18" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-19" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-20" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-21" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-22" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-23" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-24" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-25" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-26" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-27" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-28" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-29" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-30" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="123456789N-31" /></td>
</tr>
<tr><td colspan="5">Total:<input tyle="text" name="123456789N-total" readonly="readonly" /></td></tr>
</table>

<table>
<tr>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-01" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-02" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-03" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-04" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-05" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-06" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-07" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-08" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-09" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-10" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-11" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-12" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-13" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-14" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-15" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-16" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-17" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-18" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-19" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-20" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-21" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-22" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-23" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-24" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-25" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-26" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-27" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-28" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-29" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-30" /></td>
<td><input type="text" size="2" maxlength="2" onKeyUp="suma(this.name,this.form)" name="333333333P-31" /></td>
</tr>
<tr><td colspan="5">Total:<input tyle="text" name="333333333P-total" readonly="readonly" /></td></tr>
</table>

</form>


</body>
</html> 
Un saludo
__________________
Cómo escribir

No hay pregunta tonta, sino tonto que quiere seguir en la ignorancia.
  #4 (permalink)  
Antiguo 23/08/2004, 01:45
 
Fecha de Ingreso: octubre-2003
Mensajes: 44
Antigüedad: 20 años, 6 meses
Puntos: 3
Pues muchas gracias a los dos. Me habéis sacado de un apuro.
__________________
EduLopez.
Salu2 desde Albacete
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 10:38.