Ver Mensaje Individual
  #3 (permalink)  
Antiguo 20/08/2016, 08:07
Avatar de elporfirio
elporfirio
 
Fecha de Ingreso: octubre-2013
Mensajes: 37
Antigüedad: 10 años, 6 meses
Puntos: 4
Respuesta: Como hacer lo siguente en jquery

Hola me gusto mucho tu reto para empezar la mañana

===

Ahora bien, yo soy mucho de separar todo en funciones y llamarlas cuando se necesite e hice algo similar a lo tuyo:

Código Javascript:
Ver original
  1. $(document).ready(function(){
  2.   var $form = $('form');
  3.   var posting;
  4.   var divCargando = $(".cargando");
  5.   var divOkay = $(".okay");
  6.   var url = '/echo/json/';
  7.   var datos;
  8.  
  9.   $form.on('submit', function(e){
  10.     e.preventDefault();
  11.     //Se muestra el cargando antes de enviar.
  12.     mostrarLoading();
  13.    
  14.     var emailValue = $form.find('#email').val();
  15.     datos = {json: JSON.stringify({email: emailValue})}
  16.    
  17.     posting = $.post(url, datos);
  18.     posting.done(terminoEnvio);
  19.     posting.fail(errorEnvio);
  20.   });
  21.  
  22.   function terminoEnvio(result){
  23.         //esperar 2 segundos despues de que se reciba la respuesta
  24.        setTimeout(function(){
  25.          
  26.          ocultarLoading();
  27.          mostrarOkay();
  28.  
  29.                     //esperar 2 segundos antes de ocultar el okay
  30.          setTimeout(ocultarOkay, 2000);
  31.        }, 2000);
  32.   }
  33.  
  34.   function errorEnvio(error){
  35.       alert('ocurrio un error');
  36.       console.error(error);
  37.   }
  38.  
  39.   function mostrarLoading(){
  40.     divCargando.show("slow");
  41.   }
  42.  
  43.   function ocultarLoading(){
  44.     divCargando.hide("slow");
  45.   }
  46.  
  47.   function mostrarOkay(){
  48.     divOkay.show('slow');
  49.   }
  50.  
  51.   function ocultarOkay(){
  52.     divOkay.hide('slow');
  53.   }
  54. });


En cuanto a las imagenes yo las cargue desde el inicio, pero permanecen ocultas.

El html:
Código HTML:
Ver original
  1.      <input type="email" name="email" id="email" value="[email protected]" required>
  2.      <button>
  3.      Enviar email
  4.      </button>
  5. </form>
  6.  
  7. <div class="cargando">
  8.   <img src="http://onatech.com.mx/images/loading-circle.gif" width="150">
  9.   <br>
  10.   Enviando ...
  11. </div>
  12.  
  13. <div class="okay">
  14.   <img src="https://static.mytaxi.com/images/layout-1/icons/success.svg" width="150">
  15.   <br>
  16.   Enviado correctamente.
  17. </div>

EL CSS:
Código CSS:
Ver original
  1. .cargando, .okay {
  2.   display: none;
  3. }

y aquí un ejemplo funcionando:


https://jsfiddle.net/elporfirio/nhybxmj6/


Saludos.

====
https://blog.elporfirio.com
__________________
visita http://elporfirio.com o habrá tabla ¬¬