Ver Mensaje Individual
  #5 (permalink)  
Antiguo 04/05/2012, 02:38
Avatar de emprear
emprear
Colaborador
 
Fecha de Ingreso: junio-2007
Ubicación: me mudé
Mensajes: 8.388
Antigüedad: 17 años, 5 meses
Puntos: 1567
Respuesta: multiplicar campos por fila y poner totales en resultado final

bueno, voy a asumir que algo de js sabes

Primero, tenemos que poder identificar correctamente los diferentes campos, para lo cual

usas esto
Código Javascript:
Ver original
  1. <script type="text/javascript">
  2. emails=0;
  3. var c = 2;
  4. var p = 2;
  5. var t = 2;
  6. function agregar() {
  7.     emails=emails+1;
  8.     $("#campos").append('<li class="email'+emails+'">\n<label>cantidad</label><input type="text" id="C_' + c + '" name="cantidad[]" size="6"  value="0" onkeyup="sumar(this);"/>\n<label>precio</label><input type="text" id="P_' + p + '" name="precio[]" size="8" value="0" onkeyup="sumar(this);" />\n<label>total</label><input type="text" id="T_' + t + '" name="total[]" size="8" />\n</li>');
  9. c++;
  10. p++;
  11. t++;
  12. }
  13. </script>
Con eso ya le agregas un id de valor único a cada uno de los campos de las filas nuevas, a la fila por defecto que te aparece tendrias que agregarle los id C_1, P_1 y T_1 para cantidad, precio y total respectivamente.
Además a todos tu campo total tenes que asignarles un mismo class

Ahora las sumas

tu campo total va ejecutando una función, la cual multiplica el valor de ese campo
(P_1 en el caso de la primera fila por el valor del campo de igual numero pero con el prefijo C_, lo cual podés obtener haciéndole un split() al id, ejemplo, si le hacés split a C_1 utilizando como separador el caracter _ te va a quedar que el numero es el indice [1], del split, solo te resta poner el resultado de la multiplicaciín en el campo T_1, es decir T_[1]

Por otra parte, tu campo "cantidad" deberá ejecutar una función que haga un document.getElementsByTagName para los input , identificar los que tengan la clase que definiste, recuperar los value, sumarlos e ir cambiando el value de resultados.

Parece complicado, pero no lo es tanto.
Demás está decir que todo este procedimiento no incluye ningún tipo de validación sobre el tipo de datos ingresados(que obviamente serán numeros enteros ó hasta con 2 decimales supongo, ya que se trata de precios

Saludos
__________________
La voz de las antenas va, sustituyendo a Dios.
Cuando finalice la mutación, nueva edad media habrá
S.R.