Ver Mensaje Individual
  #1 (permalink)  
Antiguo 15/05/2013, 12:18
albertoshu
 
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