Foros del Web » Programando para Internet » PHP »

[SOLUCIONADO] Ejecutar funcion javascript tipo array

Estas en el tema de Ejecutar funcion javascript tipo array en el foro de PHP en Foros del Web. Hola a todos tengo la siguiente funciòn Código HTML: function calcularSub() { var canti=document.forms["cant[]"]; var pre=document.forms["p[]"]; var sub=canti*pre; document.forms["st[]"].value=sub; document.formularioCanasta.st.focus(); } la cual me calcula ...
  #1 (permalink)  
Antiguo 29/06/2014, 23:39
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Ejecutar funcion javascript tipo array

Hola a todos tengo la siguiente funciòn
Código HTML:
		function calcularSub()
{
var canti=document.forms["cant[]"];
var pre=document.forms["p[]"];
var sub=canti*pre;
document.forms["st[]"].value=sub;
document.formularioCanasta.st.focus();
}
la cual me calcula el subtotal... funciona en html, pero al querer pasarla a php dentro de while (ya que necesito que se ejecute de acuerdo a una consulta) solo lo hace una vez...
Código PHP:
 <?php do { ?>
<?php 
 
echo "<input type='text' name='p[]' id='p' value='';>";
      echo 
"<input type='tex' name='cant[]' id='cant' value=''; onKeyUp='calcularSub();' >";
            echo 
"<input type='tex' name='st[]'  id='st' value='';>";
?>
   
 <?php } while ($row_consultamysql_fetch_assoc($consulta)); ?>
No he ejecutado ninguna funcion javascript en php que tenga input array ... asì que no sè si estoy bien o no (al no funcionar deduzco que no xD )... ojala me puedan apoyar gracias :)
  #2 (permalink)  
Antiguo 30/06/2014, 00:09
Avatar de Triby
Mod on free time
 
Fecha de Ingreso: agosto-2008
Ubicación: $MX->Gto['León'];
Mensajes: 10.106
Antigüedad: 15 años, 8 meses
Puntos: 2237
Respuesta: Ejecutar funcion javascript tipo array

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.
__________________
- León, Guanajuato
- GV-Foto
  #3 (permalink)  
Antiguo 30/06/2014, 00:28
Avatar de 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 :)

Etiquetas: formulario, funcion, html, javascript, mysql, tipo
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 00:55.