Foros del Web » Programando para Internet » Jquery »

Activar función luego de que la animación termine

Estas en el tema de Activar función luego de que la animación termine en el foro de Jquery en Foros del Web. Estimado, tengo el siguiente código en mi sitio (es un smooth scroll): Código: <script> // Funcion que hace scroll automatico hasta la parte superior del ...
  #1 (permalink)  
Antiguo 29/11/2016, 12:20
 
Fecha de Ingreso: agosto-2010
Mensajes: 38
Antigüedad: 14 años, 2 meses
Puntos: 0
Activar función luego de que la animación termine

Estimado, tengo el siguiente código en mi sitio (es un smooth scroll):

Código:
<script>
// Funcion que hace scroll automatico hasta la parte superior del formulario
// Como el header es fixed, resto la altura de ese header
function scrollToForm(){
    jQuery("a[href='#nav']").click();
    jQuery('html, body').animate({
          scrollTop: (jQuery("h2:contains('Contáctanos ahora')").offset().top - (jQuery(".cg-menu-below").height() + jQuery("#contactolink .wpb_wrapper h2").height() + 20))
      }, 2000);
    jQuery("input[name='nombre']").focus();
}
jQuery(document).ready(function () {
  //Cambio el link de los elementos de menu que contienen [email protected] y numero de celular
  jQuery(".cg-wp-menu-wrapper a:contains('[email protected]'), .cg-wp-menu-wrapper a:contains('+569')").attr("href","javascript:scrollToForm()");

});
</script>
Funciona perfecto, pero el focus, es decir posicionarse en el input del formulario lo realiza inmediatamente se activa la función y necesito que se termine la animación.

Ejemplo: Le doy clic al menú contacto, la página genera la animación, baja, y una vez abajo realiza el focus al formulario de contacto.

¿Alguna ayuda? :(
  #2 (permalink)  
Antiguo 29/11/2016, 13:00
 
Fecha de Ingreso: julio-2015
Mensajes: 85
Antigüedad: 9 años, 3 meses
Puntos: 4
Respuesta: Activar función luego de que la animación termine

Código Javascript:
Ver original
  1. <script>
  2. // Funcion que hace scroll automatico hasta la parte superior del formulario
  3. // Como el header es fixed, resto la altura de ese header
  4. function scrollToForm(){
  5.     jQuery("a[href='#nav']").click();
  6.     jQuery('html, body').animate({
  7.           scrollTop: (jQuery("h2:contains('Contáctanos ahora')").offset().top - (jQuery(".cg-menu-below").height() + jQuery("#contactolink .wpb_wrapper h2").height() + 20))
  8.       }, 2000);
  9.     setTimeout(function(){
  10.             jQuery("input[name='nombre']").focus();
  11.     }, 2000)
  12. }
  13. jQuery(document).ready(function () {
  14.   //Cambio el link de los elementos de menu que contienen [email][email protected][/email] y numero de celular
  15.   jQuery(".cg-wp-menu-wrapper a:contains('[email protected]'), .cg-wp-menu-wrapper a:contains('+569')").attr("href","javascript:scrollToForm()");
  16.  
  17. });
  18. </script>
  #3 (permalink)  
Antiguo 29/11/2016, 13:11
 
Fecha de Ingreso: agosto-2010
Mensajes: 38
Antigüedad: 14 años, 2 meses
Puntos: 0
Respuesta: Activar función luego de que la animación termine

Muchas gracias dardosmania, funciona perfecto. Si no es mucha molestia ¿me podrías explicar que hiciste? :( Agradezco mucho el código, pero me gustaría aprender :( :(
  #4 (permalink)  
Antiguo 29/11/2016, 18:31
Avatar de Alexis88
Philosopher
 
Fecha de Ingreso: noviembre-2011
Ubicación: Tacna, Perú
Mensajes: 5.552
Antigüedad: 13 años
Puntos: 977
Respuesta: Activar función luego de que la animación termine

Básicamente retardó el inicio de la acción durante 2000 milésimas de segundo que es lo que dura la animación. Otra forma más eficiente de hacerlo es utilizando una función de llamada de retorno como tercer argumento del método .animate():
Código Javascript:
Ver original
  1. jQuery('html, body').animate({
  2.     scrollTop: (jQuery("h2:contains('Contáctanos ahora')").offset().top - (jQuery(".cg-menu-below").height() + jQuery("#contactolink .wpb_wrapper h2").height() + 20))
  3. }, 2000, function(){
  4.     jQuery("input[name='nombre']").focus();
  5. });

Siempre lee el manual oficial.

__________________
«Juro por mi vida y mi amor por ella, que jamás viviré para el provecho de otro hombre, ni le pediré a otro hombre que viva para el mío».

Ayn Rand

Etiquetas: Ninguno
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 05:12.