Foros del Web » Programando para Internet » Javascript » Frameworks JS »

Cargando formulario AJAX con jQuery usando imagen de cargando

Estas en el tema de Cargando formulario AJAX con jQuery usando imagen de cargando en el foro de Frameworks JS en Foros del Web. Hola amigos de esta productiva comunidad. Traigo un plugin que funciona bien: se trata de hacer click en un enlace y llama a un popup ...
  #1 (permalink)  
Antiguo 09/09/2013, 17:26
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Cargando formulario AJAX con jQuery usando imagen de cargando

Hola amigos de esta productiva comunidad. Traigo un plugin que funciona bien: se trata de hacer click en un enlace y llama a un popup por Ajax (de un archivo externo -formulario). El problema es cuando a éste le agrego un gif animado mostrando la acción de carga del formulario.

¿Qué estoy haciendo mal? Con letras rojas es el código que agregué de la img load

Este es mi código completo:

html:


Código HTML:
<!-- Button that triggers the popup -->
<a href="#" id="registrate">Regístrate</a>
<!-- Element to pop up -->
<div id="element_to_pop_up">

    <a class="bClose"></a>
    
    <div class="content">
    
  
</div> 

js:

Código:
    ;(function($) {
        $(function() {
            $('#registrate').bind('click', function(e) {            
			
				
			    var $contenidoAjax = $('#element_to_pop_up').html('<p><img src="http://www.funcion13.com/wp-content/uploads/2012/04/loader.gif" /></p>');
     
    // Simulo una petición AJAX de 3 segundos
    setTimeout(function(){
        $contenidoAjax.html('<a class="bClose"></a><div class="content"></div>');
    }, 3000);
    e.preventDefault();			 
				
				
          $('#element_to_pop_up').bPopup({
  content:'ajax', //'iframe' or 'ajax'
           contentContainer:'.content',
			
            loadUrl:'carga1.php' //Uses jQuery.load()

        });


            });
         });
     })(jQuery);


/**************************************************************/
(function(b) {
    b.fn.bPopup = function(n, p) {
        function t() {
            b.isFunction(a.onOpen) && a.onOpen.call(c);
            k = (e.data("bPopup") || 0) + 1;
            d = "__bPopup" + k;
            l = "auto" !== a.position[1];
            m = "auto" !== a.position[0];
            i = "fixed" === a.positionStyle;
            j = r(c, a.amsl);
            f = l ? a.position[1] : j[1];
            g = m ? a.position[0] : j[0];
            q = s();
            a.modal && b('<div class="bModal ' + d + '"></div>').css({
                "background-color": a.modalColor,
                height: "100%",
                left: 0,
                opacity: 0,
                position: "fixed",
                top: 0,
                width: "100%",
                "z-index": a.zIndex + k
            }).each(function() {
                a.appending && b(this).appendTo(a.appendTo)
            }).animate({
                opacity: a.opacity
            }, a.fadeSpeed);
            c.data("bPopup", a).data("id", d).css({
                left: !a.follow[0] && m || i ? g : h.scrollLeft() + g,
                position: a.positionStyle || "absolute",
                top: !a.follow[1] && l || i ? f : h.scrollTop() + f,
                "z-index": a.zIndex + k + 1
            }).each(function() {
                a.appending && b(this).appendTo(a.appendTo);
                if (null != a.loadUrl) switch (a.contentContainer = b(a.contentContainer || c), a.content) {
                case "iframe":
                    b('<iframe scrolling="no" frameborder="0"></iframe>').attr("src", a.loadUrl).appendTo(a.contentContainer);
                    break;
                default:
                    a.contentContainer.load(a.loadUrl)
                }
            }).fadeIn(a.fadeSpeed, function() {
                b.isFunction(p) && p.call(c);
                u()
            })
        }
        function o() {
            a.modal && b(".bModal." + c.data("id")).fadeOut(a.fadeSpeed, function() {
                b(this).remove()
            });
            c.stop().fadeOut(a.fadeSpeed, function() {
                null != a.loadUrl && a.contentContainer.empty()
            });
            e.data("bPopup", 0 < e.data("bPopup") - 1 ? e.data("bPopup") - 1 : null);
            a.scrollBar || b("html").css("overflow", "auto");
            b("." + a.closeClass).die("click." + d);
            b(".bModal." + d).die("click");
            h.unbind("keydown." + d);
            e.unbind("." + d);
            c.data("bPopup", null);
            b.isFunction(a.onClose) && setTimeout(function() {
                a.onClose.call(c)
            }, a.fadeSpeed);
            return !1
        }
        function u() {
            e.data("bPopup", k);
            b("." + a.closeClass).live("click." + d, o);
            a.modalClose && b(".bModal." + d).live("click", o).css("cursor", "pointer");
            (a.follow[0] || a.follow[1]) && e.bind("scroll." + d, function() {
                q && c.stop().animate({
                    left: a.follow[0] && !i ? h.scrollLeft() + g : g,
                    top: a.follow[1] && !i ? h.scrollTop() + f : f
                }, a.followSpeed)
            }).bind("resize." + d, function() {
                if (q = s()) j = r(c, a.amsl), a.follow[0] && (g = m ? g : j[0]), a.follow[1] && (f = l ? f : j[1]), c.stop().each(function() {
                    i ? b(this).css({
                        left: g,
                        top: f
                    }, a.followSpeed) : b(this).animate({
                        left: m ? g : g + h.scrollLeft(),
                        top: l ? f : f + h.scrollTop()
                    }, a.followSpeed)
                })
            });
            a.escClose && h.bind("keydown." + d, function(a) {
                27 == a.which && o()
            })
        }
        function r(a, b) {
            var c = (e.width() - a.outerWidth(!0)) / 2,
                d = (e.height() - a.outerHeight(!0)) / 2 ;
				// no d = (e.height() - a.outerHeight(!0)) / 2 - b;
            return [c, 20 > d ? 20 : d]
        }
        function s() {
            return e.height() > c.outerHeight(!0) + 20 && e.width() > c.outerWidth(!0) + 20
        }
        b.isFunction(n) && (p = n, n = null);
        var a = b.extend({}, b.fn.bPopup.defaults, n);
        a.scrollBar || b("html").css("overflow", "hidden");
        var c = this,
            h = b(document),
            e = b(window),
            k, d, q, l, m, i, j, f, g;
        this.close = function() {
            a = c.data("bPopup");
            o()
        };
        return this.each(function() {
            c.data("bPopup") || t()
        })
    };
    b.fn.bPopup.defaults = {
        amsl: 50,
        appending: !0,
        appendTo: "body",
        closeClass: "bClose",
        content: "ajax",
        contentContainer: null,
        escClose: !0,
        fadeSpeed: 250,
        follow: [!0, !0],
        followSpeed: 500,
        loadUrl: null,
        modal: !0,
        modalClose: !0,
        modalColor: "#000",
        onClose: null,
        onOpen: null,
        opacity: 0.7,
        position: ["auto", "auto"],
        positionStyle: "absolute",
        scrollBar: !0,
        zIndex: 9997
    }
})(jQuery);
  #2 (permalink)  
Antiguo 10/09/2013, 04:40
Avatar de MarioAraque
Colaborador
 
Fecha de Ingreso: octubre-2009
Ubicación: Valencia
Mensajes: 1.398
Antigüedad: 14 años, 6 meses
Puntos: 265
Respuesta: Cargando formulario AJAX con jQuery usando imagen de cargando

Lo que no te funciona es que el loading no desaparece luego de 3 segundos?

Podés probar asignando a una variable el valor de $('#element_to_pop_up')

Código Javascript:
Ver original
  1. var $contenidoAjax = $('#element_to_pop_up')
  2. $contenidoAjax.html('<p><img src="http://www.funcion13.com/wp-content/uploads/2012/04/loader.gif" /></p>');
  3.      
  4.     // Simulo una petición AJAX de 3 segundos
  5.     setTimeout(function(){
  6.         $contenidoAjax.html('<a class="bClose"></a><div class="content"></div>');
  7.     }, 3000);
  8.     e.preventDefault();

A ver si así sirve.

Saludos.
  #3 (permalink)  
Antiguo 10/09/2013, 08:24
 
Fecha de Ingreso: abril-2012
Ubicación: Argentina
Mensajes: 215
Antigüedad: 12 años
Puntos: 2
Respuesta: Cargando formulario AJAX con jQuery usando imagen de cargando

Buenas MarioAraque. Gracias por responder. Te comento que probé tu código y cuando hago click en el enlace aparece "#element_to_pop_up" y la imagen gif de carga y, luego de 3 segundos, muestra el "bClose" para cerrar div: sin cargarse el formulario.

Capaz que tenga que modificar el plugin de jquery

Etiquetas: jquery
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 22:52.