Que tal, tengo una duda acerca de realizar operaciones con input, primero les explico que estoy haciendo, realizo un formulario dinámico, el cual al presionar un boton me genera 4 input, con el evento onFocus hago una operacion de multiplicar 2 campos y mostrar el resultado en otro campo.
Hasta ahora todo funciona bien cuando genero los 4 primeros input, pero cuando genero mas input ya no me funciona la operacion de multiplicar esos 2 campos.
Les agrego el codigo con el cual genero los 4 input:
Código HTML:
<script type="text/javascript">
var contLin = 1, tr, td, tabla;
function agregar() {
document.getElementById("OcultoContLin").value = contLin;
//var
tabla = document.getElementById('TablaMed');
tr = tabla.insertRow(tabla.rows.length);
td = tr.insertCell(tr.cells.length);
// agregar [+ contLin +] para asignar un numero a cada identificador del input text
td.innerHTML = "<input type='text' size='21' name='articulo" + "'id='articulo" + "'>";
td = tr.insertCell(tr.cells.length);
td.innerHTML = "<input type='text' size='15' name='cantidad" + "'id='cantidad" + "'>";
td = tr.insertCell(tr.cells.length);
td.innerHTML = "<input type='text' size='15' name='precioUnitario" + "'onFocus='multiplicar();" + "'onBlur='Nomultiplicar();" +"'id='precioUnitario" + "'>";
td = tr.insertCell(tr.cells.length);
td.innerHTML = "<input type='text' size='15' + name='total" + "'id='total" + "'>";
contLin++;
</script>
}
De esta manera con un onFocus llamo a esa funcion y me genera los 4 input, todos los input tienen el mismo nombre, como se muestra en el codigo, al generar mas input todos se llamarian a"articulo", "cantidad", etc, pero tambien se puede asignar un numero a cada identificador de input y quedaria asi: "articulo1", "articulo2", etc.
Ahora el cofdigo con el cual hago las operaciones es el siguiente:
Código HTML:
function multiplicar(){
interval = setInterval("calcular()",1);
}
function calcular(){
cantidad = document.form1.cantidad.value;
precio = document.form1.precioUnitario.value;
result= document.form1.total.value = (cantidad * 1) * (precio * 1);
// result= document.form1.txtSubTotal.value = (cantidad * 1) * (precio * 1);
}
function Nomultiplicar(){
clearInterval(interval);
}
Espero me puedan ayudar, el codigo colo funciona cuando genero los 4 input iniciales, cuando genero mas ya no realiza las operaciones.