Foros del Web » Programando para Internet » Javascript »

Suma Input Dinámicos JavaScript

Estas en el tema de Suma Input Dinámicos JavaScript en el foro de Javascript en Foros del Web. Hola, tengo dudas con esto necesito hacer una multiplican de los input txtDias[] * txtSdi[] + txtBono[] y sacar el resultado en el txtSueldo[] y ...
  #1 (permalink)  
Antiguo 04/05/2015, 22:51
 
Fecha de Ingreso: mayo-2015
Mensajes: 5
Antigüedad: 9 años, 6 meses
Puntos: 0
Exclamación Suma Input Dinámicos JavaScript

Hola, tengo dudas con esto necesito hacer una multiplican de los input txtDias[] * txtSdi[] + txtBono[] y sacar el resultado en el txtSueldo[] y todos los txtSueldo[] Sumarlos en txtTotal, así como tengo declarada la función que es CalculaSueldo, lo hace pero solo el primer renglón los de mas los omite y la suma de total la hace bien, ya sea juntar esas dos funciones en una o arreglar la función CalculoSueldo() , este es mi script...

<script>
function CalculoSueldo() {
var dias,sdi,bono,sueldo;
dias=document.getElementById("txtDias[]").value;
sdi=document.getElementById("txtSdi[]").value;
bono=document.getElementById("txtBono[]").value;
sueldo=parseFloat(dias)*parseFloat(sdi)+parseFloat (bono);
document.getElementById("txtSueldo[]").value=sueldo;
}

function SumaTotal(){
var arr = document.getElementsByName('txtSueldo[]');
var tot=0;
for(var i=0;i<arr.length;i++){
if(parseFloat(arr[i].value))
tot += parseFloat(arr[i].value);
}
document.getElementById('txtTotal').value = tot;
}
</script>
<table width="auto" align="center">
<tr>
<td align="center">Dias</td>
<td align="center">SDI</td>
<td align="center">Bono</td>
<td align="center">Sueldo</td>
</tr>
<tr>
<td align="center"> <input type="text" id="txtDias[]" name="txtDias[]" onKeyup="CalculoSueldo()" value="1" size="5" maxlength="2" /></td>
<td align="center"> <input type="text" id="txtSdi[]" name="txtSdi[]" onKeyup="CalculoSueldo()" size="5" maxlength="5" value="10" /></td>
<td align="center"> <input type="text" id="txtBono[]" name="txtBono[]" onKeyup="CalculoSueldo()" value="5" size="5"/> </td>
<td align="center"> <input type="text" id="txtSueldo[]" name="txtSueldo[]" value="" size="5" maxlength="5" onkeyup="SumaTotal()" /></td>
</tr>
<tr>
<td align="center"> <input type="text" id="txtDias[]" name="txtDias[]" onKeyup="CalculoSueldo()" value="1" size="5" maxlength="2" /></td>
<td align="center"> <input type="text" id="txtSdi[]" name="txtSdi[]" onKeyup="CalculoSueldo()" size="5" maxlength="5" value="10" /></td>
<td align="center"> <input type="text" id="txtBono[]" name="txtBono[]" onKeyup="CalculoSueldo()" value="5" size="5"/> </td>
<td align="center"> <input type="text" id="txtSueldo[]" name="txtSueldo[]" value="" size="5" maxlength="5" onkeyup="SumaTotal()" /></td>
</tr>
<tr>
<td align="center"> <input type="text" id="txtDias[]" name="txtDias[]" onKeyup="CalculoSueldo()" value="1" size="5" maxlength="2" /></td>
<td align="center"> <input type="text" id="txtSdi[]" name="txtSdi[]" onKeyup="CalculoSueldo()" size="5" maxlength="5" value="10" /></td>
<td align="center"> <input type="text" id="txtBono[]" name="txtBono[]" onKeyup="CalculoSueldo()" value="5" size="5"/> </td>
<td align="center"> <input type="text" id="txtSueldo[]" name="txtSueldo[]" value="" size="5" maxlength="5" onkeyup="SumaTotal()" /></td>
</tr>
<tr>
<td align="center"> <input type="text" id="txtDias[]" name="txtDias[]" onKeyup="CalculoSueldo()" value="1" size="5" maxlength="2" /></td>
<td align="center"> <input type="text" id="txtSdi[]" name="txtSdi[]" onKeyup="CalculoSueldo()" size="5" maxlength="5" value="10" /></td>
<td align="center"> <input type="text" id="txtBono[]" name="txtBono[]" onKeyup="CalculoSueldo()" value="5" size="5"/> </td>
<td align="center"> <input type="text" id="txtSueldo[]" name="txtSueldo[]" value="" size="5" maxlength="5" onkeyup="SumaTotal()" /></td>
</tr>
<tr>
<td align="right" colspan="3">TOTAL:</td>
<td align="left" colspan="1"> <input type="text" id="txtTotal" name="txtTotal" value=" " size="5" maxlength="7"/> </td>
</tr>
</table>
  #2 (permalink)  
Antiguo 05/05/2015, 09:56
 
Fecha de Ingreso: mayo-2015
Mensajes: 5
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Suma Input Dinámicos JavaScript

Alguien que me pueda Ayudar :S
  #3 (permalink)  
Antiguo 05/05/2015, 12:17
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Suma Input Dinámicos JavaScript

Creo que el problema es que les pones el mismo id a todos los elementos txtDias[] para el name está bien, pero para el id sería mejor que hicieras algo como

txtDias1,txtDias2,txtDias3... etc.

y al llamar a la función pasar el número de campo, así podrías hacer una función más o menos así:

Código Javascript:
Ver original
  1. function CalculoSueldo(n) {
  2.    var dias,sdi,bono,sueldo;
  3.    dias=document.getElementById("txtDias"+n).value;
  4.    sdi=document.getElementById("txtSdi"+n).value;
  5.    bono=document.getElementById("txtBono"+n).value;
  6.    sueldo=parseFloat(dias)*parseFloat(sdi)+parseFloat (bono);
  7.    document.getElementById("txtSueldo"+n).value=sueldo;
  8. }

el html podría ser algo así:

Código HTML:
Ver original
  1. <input type="text" id="txtDias1" name="txtDias[]" onKeyup="CalculoSueldo(1)" ...>
  #4 (permalink)  
Antiguo 05/05/2015, 17:40
 
Fecha de Ingreso: mayo-2015
Mensajes: 5
Antigüedad: 9 años, 6 meses
Puntos: 0
Respuesta: Suma Input Dinámicos JavaScript

Lo que pasa es que son inputs dinámicos generados por una base de datos el script de php
  #5 (permalink)  
Antiguo 06/05/2015, 10:47
Colaborador
 
Fecha de Ingreso: mayo-2008
Ubicación: $MX['VZ']['Xalapa']
Mensajes: 3.005
Antigüedad: 16 años, 6 meses
Puntos: 528
Respuesta: Suma Input Dinámicos JavaScript

Cita:
Iniciado por a_mr Ver Mensaje
Lo que pasa es que son inputs dinámicos generados por una base de datos el script de php
Bien, ¿y el problema es...?

Etiquetas: funcion, input, suma
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 02:14.