Ver Mensaje Individual
  #3 (permalink)  
Antiguo 30/06/2014, 00:28
Avatar de Briss
Briss
 
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Ejecutar funcion javascript tipo array

Cita:
Iniciado por Triby Ver Mensaje
Ya que estás asignando ID a los inputs, estos deberían ser únicos y trabajar con esas ID en Javascript:

Código Javascript:
Ver original
  1. function calcularSub(num) {
  2.     var canti = document.getElementById('cant' + num).value;
  3.     var pre = document.getElementById('p' + num).value;
  4.     document.getElementById('st' + num).value = canti * pre;
  5.     // No tiene sentido la siguiente línea, deberías desactivar el campo
  6.     // Para que no lo modifiquen y, de paso, hacer también el cálculo en PHP al procesar
  7.     document.getElementById('st' + num).focus();
  8. }

Código PHP:
Ver original
  1. $num = 1;
  2. do {
  3.     echo <<<EOT
  4.         Si necesitas algún elemento de row_consulta lo incluyes así:
  5.         Columna: {$row_consulta['columna']}
  6.         <input type="text" name="p[]" id="p$num" value="" />
  7.         <input type="text" name="cant[]" id="cant$num" value="" onchange="calcularSub($num);" />
  8.         <input type="text" name="st[]" id="st$num" value="" readonly />
  9. EOT; // Esta línea no debe tener sangría
  10.  } while ($row_consulta= mysql_fetch_assoc($consulta));

Eso debería funcionar.

Por cierto, onkeyup (así, todo en minúsculas) hará que se ejecute la función cada vez que se presione y libere una tecla mientras el campo tiene foco. Creo que es mejor si lo haces con onchange (también solo en minúsculas) para que solo haga el cálculo al finalizar la entrada, generalmente, cuando el campo pierde el foco.

Si el campo p[] corresponde al precio, también deberías ponerlo como readonly y, como te sugerí en los comentarios del Javascript, realiza los cálculos al procesar el formulario en PHP.
GRACIAS Triby me ha quedado claro muchas gracias :)