Foros del Web » Programando para Internet » Javascript »

Sumatoria Dinamica De Campos

Estas en el tema de Sumatoria Dinamica De Campos en el foro de Javascript en Foros del Web. TENEMOS UNA SUPERURGENCIA!!!! Tenemos una forma con varios campos dinámicos, los cuales se deben sumar e ir totalizando a medida que se escriben los valores. ...
  #1 (permalink)  
Antiguo 11/06/2004, 11:17
 
Fecha de Ingreso: agosto-2002
Mensajes: 88
Antigüedad: 21 años, 8 meses
Puntos: 1
Sumatoria Dinamica De Campos

TENEMOS UNA SUPERURGENCIA!!!!

Tenemos una forma con varios campos dinámicos, los cuales se deben sumar e ir totalizando a medida que se escriben los valores. La sumatoria se refleja en otro campo.

Estamos usando una función de js, para ir haciendo la suma a medida que el campo se captura, utilizamos la propiedad de definición decampos en HTML llamada OnChange. Pero la función no nos reconoce el valor que se captura en el campo tipo INPUT, y por lo tanto no nos ejecuta la sumatoria. Al querer publicar el campo resultado nos genera un error de no identificación del campo pues dice que debe ser un objeto.

Anexamos el script y uno de los errores generados. MIl gracias por su urgente ayuda.

<html>
<head>

<link href="estiloforma10.css" rel="stylesheet" type="text/css">

<script language="javascript">
function sumar1(valor)
{
var res1=valor;
var resul= parseInt(resul)+parseInt(res1) ;
document.forms["forma10"].tot.value=resul;
}
</script>

</head>
<body>
<form name="forma10" method="POST" action="seccion5.php" enctype="multipart/form-data">
<table width="100%" border="1" cellspacing="1" cellpadding="1">

<td>Cantidad de Productos Extranjeros</td>
<td>
<form name="canex" method="POST" action="seccion5.php">
<input type="text" name="canex" size="2" maxlength="2" class="cajita" />
<input type="submit" name="enviarex" value="Continuar" class="boton"/>
</form>
</td>
<td><?php echo $i;?></td>

<?php
for($i=1;$i<=$canex;$i++)
{
?>
<tr>
<td><input name="vrcife[]" type="text" size="10" maxlength="10" onChange="sumar1(this.innerText)" /></td>
</tr>
<?php
}
?>
<tr>
<td colspan="7">Valor total:</td>
<td><input name="tot" type="text" size="12" maxlength="12" value="0" disabled/></td>
</tr>
</table>
</form>
</body>
</html>

ERROR GENERADO

Linea 13
Error : `document.forms.forma10.tot`es nulo o no es un objeto.

  #2 (permalink)  
Antiguo 11/06/2004, 11:24
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Supongo que el error te lo da porque está disabled ¿has probado a habilitarlo?
  #3 (permalink)  
Antiguo 11/06/2004, 11:50
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, pjcaro.

Prueba cambiando esto:

<td><input name="vrcife[]" type="text" size="10" maxlength="10" onChange="sumar1(this.innerText)" /></td>

Por esto otro:

<td><input name="vrcife[]" type="text" size="10" maxlength="10" onkeyup="sumar1(this.value)" /></td>

Saludos,
  #4 (permalink)  
Antiguo 11/06/2004, 12:08
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
Hola Javier

Pero... el problema no lo tiene con ese campo, si no con otro que dice que no es un objeto o es nulo

Linea 13
Error : `document.forms.forma10.tot`es nulo o no es un objeto.

  #5 (permalink)  
Antiguo 11/06/2004, 12:36
Avatar de JavierB
Colaborador
 
Fecha de Ingreso: febrero-2002
Ubicación: Madrid
Mensajes: 25.052
Antigüedad: 22 años, 2 meses
Puntos: 772
Hola, tunait.

Muy cierto, muy cierto. Se me había pasado ese detalle De todas formas ¿los campos de texto tienen evento onchange?

Si no me he vuelto a despistar (que no me extrañaría) me parece que cierra la etiqueta del formulario antes de tiempo:

<input type="submit" name="enviarex" value="Continuar" class="boton"/>
</form>

Por eso el campo con nombre "tot" está fuera del formulario

Bueno... Espero que al fín lo soluciones. Saludos,
  #6 (permalink)  
Antiguo 11/06/2004, 12:39
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
<td>Cantidad de Productos Extranjeros</td>
<td>
<form name="canex" method="POST" action="seccion5.php">
<input type="text" name="canex" size="2" maxlength="2" class="cajita" />
<input type="submit" name="enviarex" value="Continuar" class="boton"/>
</form>
</td>

cierto, ese </form> se me escapó, es que hay otro justo antes de body

</table>
</form>
</body>
</html>

Cita:
¿los campos de texto tienen evento onchange?
Sip, pero se activa sólo en el momento de perder el foco
  #7 (permalink)  
Antiguo 11/06/2004, 13:35
 
Fecha de Ingreso: agosto-2002
Mensajes: 88
Antigüedad: 21 años, 8 meses
Puntos: 1
Si, por supuesto estamos cerrando Form por que necesitameos que se despliegue las filas dimamicamente segun cannex, y cerramos form al final del script.

con this.value ya nos esta dando el valor, pero continuamos con el problema de poder mostrar la sumatoria en el campo tot que ya no esta disable.
  #8 (permalink)  
Antiguo 11/06/2004, 13:44
Avatar de tunait
Moderadora
 
Fecha de Ingreso: agosto-2001
Ubicación: Terok Nor
Mensajes: 16.805
Antigüedad: 22 años, 8 meses
Puntos: 381
No puedes cerrar un form dos veces. Ten en cuenta que los campos que queden detrás del primer </form> no serán enviados con el submit.

No puede acceder al campo porque le indicas que está en ese formulario y no es así, está fuera de él, por lo tanto se está referenciando mal.

Si pretendes que ese campo se mantenga fuera del formulario deberás referenciarlo por su id


<input name="tot" id="tot" type="text" size="12" maxlength="12" value="0" disabled />

<script language="javascript">
function sumar1(valor)
{
var res1=valor;
var resul= parseInt(resul)+parseInt(res1) ;
document.getElementById('tot').value=resul;
}
</script>
  #9 (permalink)  
Antiguo 11/06/2004, 13:59
 
Fecha de Ingreso: agosto-2002
Mensajes: 88
Antigüedad: 21 años, 8 meses
Puntos: 1
tunait, tu eres muy amable, liiisssstoooo! ya esta implementado,

MIL GRACIAS.
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 15:19.