Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   остоновка анимаций в кнопке (https://javascript.ru/forum/events/27186-ostonovka-animacijj-v-knopke.html)

okapo 04.04.2012 22:28

остоновка анимаций в кнопке
 
имею вот такую функцию

$.fn.sload = function ()
 {
  var b = [".", "..", "...", ".."];
  return this.each(function() {
    var i = 0, self = this;
    var a = setInterval(function () { 
    $(self).val("Подождите " + b[i]); 
      i = (i < 3)?(i+1):0;
    }, 500);
  });
}


вот скрипт работы

$("#sendForm").submit(function()
    {
		$(this).find(':submit').sload();
		var str = $(this).serialize();
        $.ajax(
		{
            type: "POST",
            url: "inc/modules/ads/tasks/handler_add.php",
            data: str,
            dataType: "json",
            success: function(msg)
            {
                $("#note").ajaxComplete(function(event, request, settings)
                {
                    $("input:submit").val('Отправить');
		    if (msg.status) 
		    {
                        $("#sendForm").hide();
                    }
                    $(this).html(msg.message);
                });
            }
        });
        return false;
    });


но после результат от сервера функция .sload() еще работает, как ее остановить ?

melky 04.04.2012 22:35

  1. добавить в функцию вообще возможность приостановки циклического выполнения (я про интервал)
    $.fn.sload = function ()
     {
      var b = [".", "..", "...", ".."]*!*, a;*/!*
      this.each(function() {
        var i = 0, self = this;
        a = setInterval(function () { 
        $(self).val("Подождите " + b[i]); 
          i = (i < 3)?(i+1):0;
        }, 500);
      });
      *!*return this.data('interval_id', a);*/!*
    }
    
  2. использовать эту возможность, когда потребуется.
    *!*var id = */!*$(this).find(':submit').sload()*!*.data('interval_id');*/!*
    

    и в любом месте видимости скоупа, где определена переменная id :
    clearInterval(id);
    

okapo 06.04.2012 00:40

а как сделать кнопку еще disabled ?

melky 06.04.2012 00:57

добавить ей такой атрибут.


Часовой пояс GMT +3, время: 02:10.