Foros del Web » Programando para Internet » Javascript »

Ayuda con button onClick y javascript

Estas en el tema de Ayuda con button onClick y javascript en el foro de Javascript en Foros del Web. en realidad no se si esto va aqui o en PHP aqui va la duda: tengo el siguiente codigo: Código PHP: <?  if (! $grados ) { ...
  #1 (permalink)  
Antiguo 16/06/2009, 09:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 15 años, 8 meses
Puntos: 0
Ayuda con button onClick y javascript

en realidad no se si esto va aqui o en PHP

aqui va la duda:

tengo el siguiente codigo:

Código PHP:
<? 
if (!$grados) {$grados=45; }
?>
<input type=text name='grados' id='grados' <? echo "value='$grados'"?> size=5> 
<button name=menos onClick="fmenos('grados', 1)">-</button>
<button name=mas   onClick="fmas('grados', 1)">+</button>
esto genera un campo de texto llamado GRADOS y a continuacion del campo, dos botones [+] [-] que tienen que incrementar o disminuir en 1 el valor que hay en el campo GRADOS

esto se logra con el siguiente codigo en javascript

Código:
<script language="JavaScript" type="text/javascript"> 

function fmas(inputName, vnum)
	{
	var hola = vnum;
	var numero = parseFloat(document.getElementById(inputName).value);
	
	var resultado = numero + hola; 
	resultado=Math.round(resultado*10)/10;
	document.getElementById(inputName).value = resultado; 
	return false;
	}
	
function fmenos(inputName, vnum)
	{
	var hola = vnum;
	var numero = parseFloat(document.getElementById(inputName).value);
	if (numero > 0)
		{	
		var resultado = numero - hola; 
		resultado=Math.round(resultado*10)/10;
		document.getElementById(inputName).value = resultado; 
		}
	return false;
	}
		
</script>
hasta aqui funciona correctamente,

sin embargo si GRADOS es igual a 15 por ejemplo y el usuario tiene que llegar hasta 60, tendria que darle 45 clics al boton [+], entonces

¿hay alguna forma en javascript para poder mantener apretado el boton [+] para asi llegar a numeros altos?
  #2 (permalink)  
Antiguo 16/06/2009, 10:14
Avatar de hschimpf  
Fecha de Ingreso: junio-2009
Ubicación: in the World Wide Web
Mensajes: 140
Antigüedad: 14 años, 10 meses
Puntos: 17
De acuerdo Respuesta: Ayuda con button onClick y javascript

puedes usar onmousedown y onmouseup, habilitando una bandera en onmousedown y deshabilitandola en up.. aparte una funcion con settimeout() para que se llame a si misma.. en la funcion aumentas o disminuyes el valor.. quedaria algo asi:
Código HTML:
<INPUT type="text" name="grados" id="grados" value="<?php echo $grados; ?>" size="5" />
<INPUT type="button" name="mas" onmousedown="javascript:bandera='mas';" onmouseup="javascript:bandera='false';" value="MAS" />
<INPUT type="button" name="menos" onmousedown="javascript:bandera='menos';" onmouseup="javascript:bandera='false';" value="MENOS" /> 
Código JAVASCRIPT:
Ver original
  1. function modificar() {
  2.    /* tomas el valor del input grados */
  3.    /* preguntas si la bandera esta en mas agregar 1, si esta en menos disminuis uno */
  4.    document.getElementById('grados').value = nuevoValor
  5.    /* volves a llamar a la funcion (podes variar el tiempo para que aumente mas rapido) */
  6.    window.setTimeout("modificar()",250);
  7. }

suert!
  #3 (permalink)  
Antiguo 16/06/2009, 10:41
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Ayuda con button onClick y javascript

Bueno, voy a pecar de ignorante...

1. ¿en que momento se invoca a la funcion modificar por primera vez?

2. ¿como puedo verificar el valor de la bandera?
  #4 (permalink)  
Antiguo 16/06/2009, 11:04
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Ayuda con button onClick y javascript

bueno...

ya pude hacer que funcionara modificando el codigo de la siguiente manera:

Código:
function modificar(inputName, vnum)
{
	var hola = vnum;
	var numero = parseFloat(document.getElementById(inputName).value);

 	if (bandera == "mas")
		{
		var resultado = numero + hola; 
		resultado=Math.round(resultado*100)/100;
		document.getElementById(inputName).value = resultado; 
		}
	if (bandera == "menos" && numero > 0)
		{
		var resultado = numero - hola; 
		resultado=Math.round(resultado*100)/100;
		document.getElementById(inputName).value = resultado; 
		}
 /* volves a llamar a la funcion (podes variar el tiempo para que aumente mas rapido) */
 window.setTimeout("modificar(inputName, hola)",250);
}
pero todavia va aumentando de 1 en 1...
alguna idea de como puedo solucionar esto??
  #5 (permalink)  
Antiguo 16/06/2009, 12:04
Avatar de hschimpf  
Fecha de Ingreso: junio-2009
Ubicación: in the World Wide Web
Mensajes: 140
Antigüedad: 14 años, 10 meses
Puntos: 17
Pregunta Respuesta: Ayuda con button onClick y javascript

Cita:
Iniciado por InfestedART Ver Mensaje
pero todavia va aumentando de 1 en 1...
alguna idea de como puedo solucionar esto??
a ver si te entendi.. vos queres que cuanto mas tiempo quede presionado el boton aumente de a 5, luego de a 10, etc..? algo asi es lo que necesitas..?

podrias tener una variable mas que sea el nivel de aumento, y cada 10 veces que se sume el valor dentro de la funcion aumentas el valor de esta otra variable en 5.. y una vez que se ejecute onmouseup reseteas esta variable a 1..
  #6 (permalink)  
Antiguo 17/06/2009, 08:03
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Ayuda con button onClick y javascript

no, no
necesito que vaya incrementando de 1 en 1, pero me exprese mal

cuando se presiona el boton del mouse sobre el boton [+], el valor del campo GRADOS aumenta en uno y luego no pasa nada mas. para volver a incrementar se debe soltar el mouse y volver a hacer clic.
lo que quiero que pase es que mientras mantengas presionado el boton del mouse, vaya incrementado rapidamente (pero de uno en uno) hasta que el usuario sulete el btoon del mouse
  #7 (permalink)  
Antiguo 18/06/2009, 07:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Ayuda con button onClick y javascript

Bueno, problema casi solucionado.
Pude lograr hacer el incremento con este codigo, sin embargo el onMouseUp no funciona y el incremento se detiene depues de 3000 incrementos:

Código:
<script language="JavaScript" type="text/javascript">

var gIsMouseDown = false;
 
function setMouseDown(inputName, vnum)
	{
	var yipee = inputName;
	var hola  = vnum; 
	gIsMouseDown = true;
	doMouseDown(yipee, hola);
	}
	
function doMouseDown(inputName, vnum)
	{
	var yipee = inputName;
	var hola  = vnum; 
	if (gIsMouseDown == true)
		{
		document.getElementById(inputName).value = parseInt(document.getElementById(inputName).value) + vnum;
		setTimeout(doMouseDown(yipee, hola), 250);
		}
	}
	
function setMouseUp()
{
gIsMouseDown = false;
}
</script>
  #8 (permalink)  
Antiguo 18/06/2009, 09:47
 
Fecha de Ingreso: agosto-2008
Mensajes: 20
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Ayuda con button onClick y javascript

Bueno, problema resuelto.
aqui les pongo el codigo ganador

Código:
<script type="text/javascript">
var c=0
var t

function timedCountMas(inputName, vnum)
{
hola = inputName;
x = vnum;
document.getElementById(inputName).value=c;
c=c+x;
c=Math.round(c*100)/100;
t=setTimeout("timedCountMas(hola, x)", 66);
}

function timedCountMenos(inputName, vnum)
{
hola = inputName;
x = vnum;
document.getElementById(inputName).value=c;
if (c>0) 
	{ c=c-x;
	  c=Math.round(c*100)/100;
	  t=setTimeout("timedCountMenos(hola, x)", 66); }
}

function stopCount()
{
clearTimeout(t);
}
</script>

<html>
<body>
.
.
<input name='grados' type=text id='grados' value=0 size="5"> 
<input type="button" value="-" onMouseDown=" timedCountMenos('grados', 1)" onMouseUp="stopCount()" onMouseOut="stopCount()"/>
<input type="button" value="+" onMouseDown=" timedCountMas('grados', 1)" onMouseUp="stopCount()" onMouseOut="stopCount()"/>
.
.
</body>
</html
gracias a hschimpf por la ayuda
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 12:41.