Foros del Web » Programando para Internet » Javascript »

Problemas con campos array y calculos dinamicos con javascript

Estas en el tema de Problemas con campos array y calculos dinamicos con javascript en el foro de Javascript en Foros del Web. Hola! Tengo un problema con un formulario y espero me puedan ayudar, les explico: Estoy haciendo un proceso para cotizar y conforme se van agregando ...
  #1 (permalink)  
Antiguo 01/06/2012, 12:01
Avatar de lord_clown  
Fecha de Ingreso: marzo-2011
Mensajes: 43
Antigüedad: 13 años, 1 mes
Puntos: 0
Problemas con campos array y calculos dinamicos con javascript

Hola!

Tengo un problema con un formulario y espero me puedan ayudar, les explico:

Estoy haciendo un proceso para cotizar y conforme se van agregando los productos se arma una tabla en la cual solicito el costo que se le dará al producto y un porcentaje de descuento en caso de que aplique.

El detalle es que la tabla con el formulario ocupo campos array, les dejo el codigo:

Código:
<form action="proyect_cotiz_cond_comer.php" method="post" id="formulario">
         <table id="vis_table" align="center">
         	<tr>
            	<th colspan="9">PRODUCTOS</th>
            </tr>
            <tr>
            	<th>Producto</th>
                <th>Cantidad</th>
                <th>Precio de Lista</th>
                <th>Precio Final</th>
                <th>Descuento</th>
            </tr>
             <?php
	$sql=mysql_query("CONSULTA") or die(mysql_error());
	$registros=mysql_num_rows($sql);
	while($row=mysql_fetch_array($sql)){
	?>
            <tr>
            	<td><?php echo $row['producto'];?><input type="hidden" name="registro[]" value="<?php echo $row['registro']; ?>" /></td>
                 <td><input type="text" name="cantidad[]" class="required number" size="10" /></td>
                 <td><input type="text" id="multiplicando[]" value="<?php echo $row['precio_lista'];?>" onChange="multiplicar();" disabled="disabled"></td></td>
                 <td><input type="text" name="precio_fin[]" class="required number" size="10" /></td>
                  <td><input type="text" name="descuento[]" class="required number" size="10" /></td>
              </tr>
             <?php
	}
                ?>
Necesito hacer que dinamicamente cada campo de precio final se actualice dependiendo el descuento asignado, el detalle es que si lo hago con un solo campo funciona perfectamente, pero cuando le asigno los corchetes a los imput para validarlos el javascript deja de funcionar; el javascript que estoy ocupando es el siguiente:

Código:
function multiplicar() {
	var m1 = new Array(2)
	var m2 = new Array(2)
	var r = new Array(2)
m1[0] = document.getElementById("multiplicando").value;
m2[0] = document.getElementById("multiplicador").value;

r= (m2 * m1 )/100;
r=m1 -r;
document.getElementById("resultado").value = r;
Esto lo hago asi para que al enviar mi formulario reciba cada variable y guarde esos datos capturados en la base de datos.

Como puedo hacer para que un javascript me calcule los montos al momento y los refleje en otro text trabajando con campos array?
  #2 (permalink)  
Antiguo 01/06/2012, 14:28
Avatar de IsaBelM
Colaborador
 
Fecha de Ingreso: junio-2008
Mensajes: 5.032
Antigüedad: 15 años, 10 meses
Puntos: 1012
Respuesta: Problemas con campos array y calculos dinamicos con javascript

el html está bien, menos en este control
Cita:
<input type="text" id="multiplicando[]" value="<?php echo $row['precio_lista'];?>" onChange="multiplicar();" disabled="disabled">
  • el atributo name es el que ha de tener el array asociativo
  • si el control está deshabilitado, como se puede invocar a multiplicar() ??

Cita:
m1[0] = document.getElementById("multiplicando").value;
  • el valor de los controles no puedes recogerlo por su id, sino por su name
  • las operaciones matemáticas no pueden dar ningún resultado por que estás operando con array en lugar de valores

a simple vista esto es lo que detecto
__________________
if(ViolenciaDeGénero) {alert('MUJER ASESINADA');}

Etiquetas: campos, dinamico, formulario, php, arreglos
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 20:29.