Foros del Web » Programando para Internet » Javascript »

para de ejecución php al desabilitar boton submit

Estas en el tema de para de ejecución php al desabilitar boton submit en el foro de Javascript en Foros del Web. Hola, Tengo un formulario con un botón submit que se manada por email. Un vez el usuario lo ha rellenado, le da al botón enviar, ...
  #1 (permalink)  
Antiguo 15/05/2013, 12:18
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 1
para de ejecución php al desabilitar boton submit

Hola,

Tengo un formulario con un botón submit que se manada por email. Un vez el usuario lo ha rellenado, le da al botón enviar, se envia por email, la página se recarga y le muestra una confirmación del tipo "tu información se ha enviado".

El caso es, que como la función de php de enviar emails tarda en ejecutarse, la página tarda en recargarse y por tanto la confirmación de "tu información ha sido enviada" también tarda. Esto hace que haya veces que los usarios den varias veces al botón de "enviar" pensando que la página no está funcionando, lo cual, da diversos problemas.

Para evitar que esto pase (que un usuario de varias veces al botón enviar sin esperar a que se recarge la página) había pensando desahabilitar el botón con javascript una vez que se ha pulsado la primera vez.

El problema es que cuando se ejecuta el script que desabilita el boton, la página para su ejecución php y no se recarga.

Bueno ahí va el código simpligficado:

Código PHP:

<?php

if(!isset($_POST['campo'])){ ?>


   <script type="text/javascript" >
        function desabilitar_boton(id){
        
          document.getElementById(id).disabled=true;       
          alert("hola");
        }
   </script>
 

    <FORM METHOD="POST" ACTION="">
   
        <input type="hidden" name="campo" value=""/>
        <input id="boton1" name="boti" type="submit"  onClick="desabilitar_boton('boton1')" value="Pulsa el boton">
 
     </FORM>

<?php } else 

      echo 
"LA PAGINA SE HA RECARGADO";
?>
En este ejemplo, al apretar el botón, el botón se desahabilita, pero el texto "LA PÁGINA SE HA RECARGADO", no se muestra.

He visto que, en concreto, es la linea "document.getElementById(id).disabled=true" la que hace que se pare la ejecución de la página una vez terminado el script. De hecho si quito esa líena, la página si se recarga (y el script funciona porque se ve muestra el alert).

La verdad es que es un poco raro. Eso, o que tengo poca ídea.

Un saludo a todos y a ver si alquien me ilumina.

Última edición por albertoshu; 15/05/2013 a las 12:29
  #2 (permalink)  
Antiguo 15/05/2013, 14:00
Avatar de veniwarez  
Fecha de Ingreso: julio-2010
Mensajes: 110
Antigüedad: 13 años, 9 meses
Puntos: 3
Respuesta: para de ejecución php al desabilitar boton submit

Podrías poner antes de mandarlo un mensaje que diga cargando... o espere un cierto tiempo y una imagen de carga y cuando finalice el PHP ejecutas un JS que elimine la imagen o que ponga un OK y que cambie el mensaje por ENVIADO

Espero te sirva :D
ATTE VW
  #3 (permalink)  
Antiguo 16/05/2013, 05:01
 
Fecha de Ingreso: agosto-2007
Mensajes: 237
Antigüedad: 16 años, 8 meses
Puntos: 1
Respuesta: para de ejecución php al desabilitar boton submit

Gracias VW, la verdad es que esa es un buena solución.

El tema es que me gustaría saber si lo que estoy haciendo con javascript, efectiamvente, no se puede hacer, porque es un poco raro. No parece nada que debiera tener mucho problema. Es decir, es normal que al desabilitar un boton submit, se para la ejecución del php?

Si al final, no se puede, acabaré hacieno los me has recomendado.
Muchas Gracias!!!

Etiquetas: boton, 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 13:22.