Foros del Web » Programando para Internet » Javascript »

deshabilitar un botón submit cuando acabe una cuenta atras

Estas en el tema de deshabilitar un botón submit cuando acabe una cuenta atras en el foro de Javascript en Foros del Web. Buenas tardes, Me podrian ayudar con el codigo necesario para deshabilitar un botón submit cuando acabe una cuenta atras? Muchas gracias. este es el codigo ...
  #1 (permalink)  
Antiguo 11/08/2011, 13:07
 
Fecha de Ingreso: febrero-2011
Mensajes: 23
Antigüedad: 13 años, 2 meses
Puntos: 0
deshabilitar un botón submit cuando acabe una cuenta atras

Buenas tardes,
Me podrian ayudar con el codigo necesario para deshabilitar un botón submit cuando acabe una cuenta atras?

Muchas gracias.

este es el codigo de la cuenta atras:

<script language="JavaScript">

StartCountDown("clock1","09/07/2011 07:28 PM")
function StartCountDown(myDiv,myTargetDate)
{
var dthen = new Date(myTargetDate);
var dnow = new Date();
ddiff = new Date(dthen-dnow);
gsecs = Math.floor(ddiff.valueOf()/1000);
CountBack(myDiv,gsecs);
}

function Calcage(secs, num1, num2)
{
s = ((Math.floor(secs/num1))%num2).toString();
if (s.length < 2)
{
s = "0" + s;
}
return (s);
}

function CountBack(myDiv, secs)
{
var DisplayStr;
var DisplayFormat = "%%D%% Dias, %%H%% Horas, %%M%% Minutos, %%S%% Segundos.";
DisplayStr = DisplayFormat.replace(/%%D%%/g, Calcage(secs,86400,100000));
DisplayStr = DisplayStr.replace(/%%H%%/g, Calcage(secs,3600,24));
DisplayStr = DisplayStr.replace(/%%M%%/g, Calcage(secs,60,60));
DisplayStr = DisplayStr.replace(/%%S%%/g, Calcage(secs,1,60));
if(secs > 0)
{
document.getElementById(myDiv).innerHTML = DisplayStr;
setTimeout("CountBack('" + myDiv + "'," + (secs-1) + ");", 990);
}
else
{
document.getElementById(myDiv).innerHTML = "cuenta atras ha terminado!";
}

}

</script>
  #2 (permalink)  
Antiguo 11/08/2011, 15:08
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: deshabilitar un botón submit cuando acabe una cuenta atras

Por que no intentas a pasar como parámetro el id del botón a desactivar así como haces con el div en el cual realizas la cuenta atrás, de esa manera obtendrías algo como esto:

Código Javascript:
Ver original
  1. <script language="JavaScript">
  2.  
  3. StartCountDown("clock1","09/07/2011 07:28 PM")
  4. function StartCountDown(myDiv,myTargetDate)
  5. {
  6. var dthen   = new Date(myTargetDate);
  7. var dnow    = new Date();
  8. ddiff    = new Date(dthen-dnow);
  9. gsecs    = Math.floor(ddiff.valueOf()/1000);
  10. CountBack(myDiv,gsecs);
  11. }
  12.  
  13. function Calcage(secs, num1, num2)
  14. {
  15. s = ((Math.floor(secs/num1))%num2).toString();
  16. if (s.length < 2)
  17. {  
  18. s = "0" + s;
  19. }
  20. return (s);
  21. }
  22.  
  23. function CountBack(myDiv, secs, desh)
  24. {
  25. var DisplayStr;
  26. var DisplayFormat = "%%D%% Dias, %%H%% Horas, %%M%% Minutos, %%S%% Segundos.";
  27. DisplayStr = DisplayFormat.replace(/%%D%%/g,    Calcage(secs,86400,100000));
  28. DisplayStr = DisplayStr.replace(/%%H%%/g,    Calcage(secs,3600,24));
  29. DisplayStr = DisplayStr.replace(/%%M%%/g,    Calcage(secs,60,60));
  30. DisplayStr = DisplayStr.replace(/%%S%%/g,    Calcage(secs,1,60));
  31. if(secs > 0)
  32. {  
  33. document.getElementById(myDiv).innerHTML = DisplayStr;
  34. setTimeout("CountBack('" + myDiv + "'," + (secs-1) + ", '"+desh+"' );", 990);
  35. }
  36. else
  37. {
  38.     document.getElementById(desh).disabled = true;
  39. document.getElementById(myDiv).innerHTML = "cuenta atras ha terminado!";
  40. }
  41.  
  42. }
  43.  
  44. </script>

Al manejar recursividad debes también enviar el parámetro que recibes dentro de la función.

Código HTML:
<body onload="CountBack('c',60,'env')">
<div id="c"></div>
<form action="prueba.php" method="post">
<input type="submit" value="Enviar" id="env" />
</form>
</body> 
Espero que sea lo que estas buscando.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #3 (permalink)  
Antiguo 17/08/2011, 14:20
 
Fecha de Ingreso: febrero-2011
Mensajes: 23
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: deshabilitar un botón submit cuando acabe una cuenta atras

Hola laratik,
Gracias por tu rapida respuesta, pero me podrias explicar un poquillo como hacer lo que me dices?

Un saludo.
  #4 (permalink)  
Antiguo 18/08/2011, 08:24
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: deshabilitar un botón submit cuando acabe una cuenta atras

Me refiero a pasar como parámetro el botón que quieres deshabilitar:

function CountBack(myDiv, secs, desh)

Cuando acabe la cuenta atrás deshabilitas el botón:

else
{
document.getElementById(desh).disabled = true;
document.getElementById(myDiv).innerHTML = "cuenta atras ha terminado!";
}

Cuando invoques de nuevo la función dentro del setTimeout no olvides enviar el botón a deshabilitar:

setTimeout("CountBack('" + myDiv + "'," + (secs-1) + ", '"+desh+"' );", 990);

Todos los cambios que te he señalado se pueden observar en mi primer post.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #5 (permalink)  
Antiguo 18/08/2011, 14:08
 
Fecha de Ingreso: febrero-2011
Mensajes: 23
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: deshabilitar un botón submit cuando acabe una cuenta atras

Perdon por mi torpeza, ya he puesto todo lo que me has dicho, pero el boton no se me bloquea...
Creo que lo que no tengo claro de como se hace es lo de la recursividad...
Pongo todos los parametros en el script de la cuenta atras, pero no se que hay que hacer en la parte del boton, o como debo decir, que boton es el que hay que bloquear...

Muchas gracias.
  #6 (permalink)  
Antiguo 20/08/2011, 11:47
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: deshabilitar un botón submit cuando acabe una cuenta atras

Debes pasar como parámetro el Id del botón que vas a desactivar:

Cita:
Iniciado por laratik Ver Mensaje
Código HTML:
<body onload="CountBack('c',60,'env')">
<div id="c"></div>
<form action="prueba.php" method="post">
<input type="submit" value="Enviar" id="env" />
</form>
</body> 
Referente a la recursividad, es cuando la función se invoca a si misma:

Código Javascript:
Ver original
  1. setTimeout("CountBack('" + myDiv + "'," + (secs-1) + ", '"+desh+"' );", 990);
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #7 (permalink)  
Antiguo 20/08/2011, 18:33
 
Fecha de Ingreso: febrero-2011
Mensajes: 23
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: deshabilitar un botón submit cuando acabe una cuenta atras

Hola laratik,
Ya he conseguido hacer lo que me has explicado, pero tengo alguna duda, a ver si me puedes seguir ayudando...
Consigo que el boton se bloquee y salga el mensaje, pero en el codigo
<body onload="CountBack('c',60,'env')">
me has puesto que se bloquee a los 60segundos de recargar la pagina...
Yo necesito que se me bloquee en una fecha determinada...
Por ejemplo, como tengo puesto en el codigo:
StartCountDown("clock1","09/07/2011 07:28 PM")

Se podria hacer de alguna forma?

MUCHAS GRACIAS!!
  #8 (permalink)  
Antiguo 21/08/2011, 09:50
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: deshabilitar un botón submit cuando acabe una cuenta atras

Algo como esto:

Código Javascript:
Ver original
  1. <script language="JavaScript">
  2. window.onload = function(){StartCountDown("clock1",{year:2011,month:7,day:21,hour:10,minute:44},"env")};
  3. function StartCountDown(myDiv,myTargetDate,desh)
  4. {
  5. var dthen = new Date(myTargetDate.year,myTargetDate.month,myTargetDate.day,myTargetDate.hour,myTargetDate.minute);
  6. var dnow = new Date();
  7. ddiff = new Date(dthen-dnow);
  8. gsecs = Math.floor(ddiff.valueOf()/1000);
  9. CountBack(myDiv,gsecs,desh);
  10. }
  11.  
  12. function Calcage(secs, num1, num2)
  13. {
  14. s = ((Math.floor(secs/num1))%num2).toString();
  15. if (s.length < 2)
  16. {
  17. s = "0" + s;
  18. }
  19. return (s);
  20. }
  21.  
  22. function CountBack(myDiv, secs, desh)
  23. {
  24. var DisplayStr;
  25. var DisplayFormat = "%%D%% Dias, %%H%% Horas, %%M%% Minutos, %%S%% Segundos.";
  26. DisplayStr = DisplayFormat.replace(/%%D%%/g, Calcage(secs,86400,100000));
  27. DisplayStr = DisplayStr.replace(/%%H%%/g, Calcage(secs,3600,24));
  28. DisplayStr = DisplayStr.replace(/%%M%%/g, Calcage(secs,60,60));
  29. DisplayStr = DisplayStr.replace(/%%S%%/g, Calcage(secs,1,60));
  30. if(secs > 0)
  31. {
  32. document.getElementById(myDiv).innerHTML = DisplayStr;
  33. setTimeout("CountBack('" + myDiv + "'," + (secs-1) + ", '"+desh+"' );", 990);
  34. }
  35. else
  36. {
  37.     document.getElementById(desh).disabled = true;
  38.     document.getElementById(myDiv).innerHTML = "cuenta atras ha terminado!";
  39. }
  40. }
  41. </script>

Estaba observando que enviabas una cadena con formato "09/07/2011 07:28 PM", la cual a mi no me funcionaba, asi que la cambie por un objeto con estos datos como enteros (hace falta recordar que el mes se expresa como mes-1, asi enero no es 1, si no 0). Espero que te halla servido de ayuda.
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.
  #9 (permalink)  
Antiguo 21/08/2011, 16:14
 
Fecha de Ingreso: febrero-2011
Mensajes: 23
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: deshabilitar un botón submit cuando acabe una cuenta atras

Por fiiinnnn!!!!
MUCHISIMAS GRACIAS!!!!!
Te doy un 10!!!
  #10 (permalink)  
Antiguo 21/08/2011, 16:22
 
Fecha de Ingreso: febrero-2011
Mensajes: 23
Antigüedad: 13 años, 2 meses
Puntos: 0
Respuesta: deshabilitar un botón submit cuando acabe una cuenta atras

Abusando un poco de tu enorme conocimiento...
Se podria sumar tambien, que cuando acabe el tiempo, a parte de poner "cuenta atras ha terminado" , bloquear el boton, se podria enviar un email a una direccion de correo cogida de la base de datos Mysql, con la pagina web donde esta el reloj, impresa en el email?

Muchisimas gracias de nuevo!
  #11 (permalink)  
Antiguo 21/08/2011, 16:46
Avatar de laratik  
Fecha de Ingreso: mayo-2010
Ubicación: Cali
Mensajes: 317
Antigüedad: 13 años, 10 meses
Puntos: 63
Respuesta: deshabilitar un botón submit cuando acabe una cuenta atras

Cita:
Iniciado por gonfrias19 Ver Mensaje
Abusando un poco de tu enorme conocimiento...
Se podria sumar tambien, que cuando acabe el tiempo, a parte de poner "cuenta atras ha terminado" , bloquear el boton, se podria enviar un email a una direccion de correo cogida de la base de datos Mysql, con la pagina web donde esta el reloj, impresa en el email?

Muchisimas gracias de nuevo!
Para lo que necesitas, debes emplear un lenguaje del lado del servidor (PHP, ASP, JSP, etc), tanto para enviar el mail, como para extraer datos de mysql, con javscript lo único que podrás hacer es redireccionar al script del lado del servidor o utilizar AJAX. Asi que te sugiero empieces a investigar la manera de enviar correos (si piensas emplear PHP) y como se trabaja SQL desde el lenguaje que vayas a utilizar. Ya cuando estes desarrollando tu proyecto puedes volver a pedir asistencia. SALUDOS .
__________________
Programar apasiona y lo que apasiona es un arte, por lo tanto programar es un arte.

Quiero karma para en mi próxima vida ser un billonario bien dotado con alas.

Etiquetas: atras, deshabilitar, html, submit
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 16:02.