Foros del Web » Programando para Internet » Javascript »

Promedio sin tener que pulsar boton

Estas en el tema de Promedio sin tener que pulsar boton en el foro de Javascript en Foros del Web. Hola a todos tengo el siguiente código el cual saca el promedio de 3 números traídos de la BD <input type="text" name="prom[]" id="prom" value="<?php $Promedio=($row_calificarm['parcial1']+$row_calificarm['parcial2']+$row_calificarm['parcial3'])/3; ...
  #1 (permalink)  
Antiguo 27/03/2012, 11:27
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Promedio sin tener que pulsar boton

Hola a todos tengo el siguiente código el cual saca el promedio de 3 números traídos de la BD

<input type="text" name="prom[]" id="prom" value="<?php $Promedio=($row_calificarm['parcial1']+$row_calificarm['parcial2']+$row_calificarm['parcial3'])/3; echo number_format ($Promedio,2); ?> />


Funciona perfecto pero a la hora de actualizar mi calificación 3 por ejemplo... el promedio se actualiza en el input pero al insertarlo a la BD no... solo al dar doble clic....

mi pregunta es que puedo hacer para q el promedio se actualice inmediatamente

estuve probando algo como esto
<script>
function sumar() {
var n1 = parseInt(document.MyForm.numero1.value);
var n2 = parseInt(document.MyForm.numero2.value);
document.MyForm.resultado.value=n1+n2;
}
</script>
</head>

<body>

<form name="MyForm">
<input type="text" name="numero1" size="20">
<input type="text" name="numero2" size="20">
<input type="text" name="resultado" size="20">

<input type="button" value="Sumar" onclick="sumar()">
</form>
Pero no quiero que la acción se ejecute al presionar un botón si no automáticamente

DE ANTE MANO GRACIAS POR SUS RESPUESTAS
  #2 (permalink)  
Antiguo 27/03/2012, 11:59
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Tokyo - Japan !
Mensajes: 3.867
Antigüedad: 14 años, 6 meses
Puntos: 334
Respuesta: Promedio sin tener que pulsar boton

para eso esta el evento onchange de javascript.
http://www.w3schools.com/jsref/event_onchange.asp

PD: te recuerdo que estas en el foro de PHP, has tus consultas en el foro correspondiente.

saludos.
__________________
More about me...
~ @rhyudek1
~ Github
  #3 (permalink)  
Antiguo 27/03/2012, 12:28
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Promedio sin tener que pulsar boton

Gracias por responder lo que sucede es que no sé mucho de java... podrías orientarme un poco más
  #4 (permalink)  
Antiguo 27/03/2012, 13:04
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Promedio sin tener que pulsar boton

Lo que dice Hidek es q llames a suma() en el evento onchange de numero1/numero2

Acá podés ver todos los eventos de los imput http://www.w3schools.com/tags/tag_input.asp
  #5 (permalink)  
Antiguo 27/03/2012, 13:33
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Promedio sin tener que pulsar boton

Gracias por tu ayuda he cambiado esto <form name="MyForm">
<input type="text" name="numero1" size="20" onchange="sumar()">
<input type="text" name="numero2" size="20" onchange="sumar()">
<input type="text" name="resultado" size="20" onchange="sumar()">


pero al poner el primer numero en el ultimo input me muestra esto NaN

como puedo evitar esto????
  #6 (permalink)  
Antiguo 27/03/2012, 13:56
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Promedio sin tener que pulsar boton

Porque colocas el sumar() en el campo resuldato?

NaN es "Not a Number", debes validar que lo que el usuario a ingresado es un numero antes de hacer la operacion. Tambien es bueno inicializar, hacer q las cosas tengan un valor por defecto, no los dejes vacios.
  #7 (permalink)  
Antiguo 27/03/2012, 17:35
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Promedio sin tener que pulsar boton

gracias por tu respuesta eh adecuado el codigo a lo q prendo hacer que sacer promedio lo tengo asi


<script>
function promedio() {
var n1 = parseInt(document.form1.p1.value);
var n2 = parseInt(document.form1.p2.value);
var n3 = parseInt(document.form1.p3.value);
document.form1.prom1.value=(n1+n2+n3)/3;
}
</script>


<td><input type="text" name="p1[]" id="p1" value="<?php echo $row_calificarm['parcial1']; ?>" size="3" style="border: none;background:#e6e6e6"disabled onchange="promedio()" /> </td>
<td><input type="text" name="p2[]" id="p2" value="<?php echo $row_calificarm['parcial2']; ?>" size="3" style="border: none;background:#e6e6e6"disabled onchange="promedio()"/> </td>

<td><input type="text" name="p3[]" id="p3" value="<?php echo $row_calificarm['parcial3']; ?>" size="3" style="border: none;" onchange="promedio()"/></td>

<td> <input type="text" name="prom1[]" id="prom1" "size="3" style="border: none;background:#e6e6e6" /></td>


Funciona bien solo que como el input p3 no tiene un valor (ya que tengo q insertar en este formulario a la BD ) no saca el promedio hasta que meto una cantidad en el input p3... ahora espero me puedas ayudar como hagO para q si p3 es un campo null saque el promedio tomando su valor como 0 hasta el momento en que se teclea una calificación diferente...

Ejemplo

en mi base tengo p1=7, p2= 10 y p3=null
aqui no hace nada mi código

hasta q tengo p1=7 + p2=10 + p3=5 (aqui inserto un valor para la BD)

prom1=7.33333


NOta p1 y p2 los traigo desde la BD tambien a p3 solo q tiene un valor nulo
  #8 (permalink)  
Antiguo 27/03/2012, 17:59
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Promedio sin tener que pulsar boton

mI CAMPO es tipo float y lo he dejado asi nulo si predeterminado 0

solo que al mandarlo a traer desde la BD

me quedaria algo asi
7+5+0 (ya q es el valor predeterminado antes de insertar)

Pero no saca el promedio hasta q meto un numero distinto de 0 en el input p3

que puedo hacer :s
  #9 (permalink)  
Antiguo 27/03/2012, 18:52
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Promedio sin tener que pulsar boton

he cambiado el evento onchange por onClick

y he logrado sacar el promedio pero solo si doy clic primero en p3...
que puedo hacer para q lo saque inmediatamente es decir
p1=7+p2=9+p3=0(valor por defecto)

prom1=5.33333333333
  #10 (permalink)  
Antiguo 27/03/2012, 18:52
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Promedio sin tener que pulsar boton

El evento onChange es SOLO para cuando cambias el valor en el imput, si quieres que se ejecute al cargar la pagina debes llamar a promedio() en el evento onLoad de <body>

Si el campo no tiene un valor predeterminado lo puedes poner en la consulta
Código SQL:
Ver original
  1. SELECT parcial1, parcial2, IF(parcial3 IS NULL,0,parcial3) FROM ...
o en el PHP
Código PHP:
Ver original
  1. <?php if(empty($row_calificarm['parcial3'])) ? echo 0 : echo $row_calificarm['parcial3']; ?>
o en el javascript
Código Javascript:
Ver original
  1. var n3 = 0;
  2. if(!isNaN(parseInt(document.form1.p3.value))){
  3.    n3 = parseInt(document.form1.p3.value)
  4. }

o cualquier convinacion de las tres
  #11 (permalink)  
Antiguo 27/03/2012, 18:59
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Promedio sin tener que pulsar boton

GRACIAS OTRA VES REALMENTE ME ESTAS AYUDANDO BASTANTE :)

listo he regresado a onchange y eh agregado en body onLoad="promedio()"
lo cual saca el promedio desde el inicio GRACIAS MIL

ahora solo la ultima pregunta (sorry)

como puedo poner en prom1 para q se corte a dos decimales

<input type="text" name="prom1[]" id="prom1" "size="3" style="border: none;background:#e6e6e6" />

Lo hacia si

<input type="text" name="prom[]" id="prom" value="<?php $Promedio=($row_calificarm['parcial1']+$row_calificarm['parcial2']+$row_calificarm['parcial3'])/3; echo number_format ($Promedio,2); ?>

pero era desde php
  #12 (permalink)  
Antiguo 28/03/2012, 12:13
Avatar de lisandro Arg  
Fecha de Ingreso: octubre-2003
Ubicación: Cordoba, Argentina
Mensajes: 945
Antigüedad: 20 años, 6 meses
Puntos: 24
Respuesta: Promedio sin tener que pulsar boton

eso con toFixed()
http://informatica-practica.net/solo...on-javascript/
  #13 (permalink)  
Antiguo 28/03/2012, 12:36
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Promedio sin tener que pulsar boton

Cita:
Iniciado por lisandro Arg Ver Mensaje
estoy probando asi
<script>
function promedio() {
var n1 = parseFloat(document.form1.p1.value);
var n2 = parseFloat(document.form1.p2.value);
var n3 = parseFloat(document.form1.p3.value);

document.form1.prom1.value=(n1+n2+n3)/3;
document.write(prom1.toFixed(2));
}
</script>


pero aun no lo logro ...
  #14 (permalink)  
Antiguo 28/03/2012, 13:03
Avatar de Briss  
Fecha de Ingreso: junio-2011
Mensajes: 1.293
Antigüedad: 12 años, 10 meses
Puntos: 12
Respuesta: Promedio sin tener que pulsar boton

LISTO :)

ES ASI



document.form1.prom1.value=((n1+n2+n3)/3).toFixed(2);

Etiquetas: promedio, pulsar, tener, botones
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 04:29.