$(document).ready(function(){
    var $form = $('#filter'),
        $controls = $form.find('input,select,textarea');
    $controls.on('change', function(){
         startLoadingAnimation();
        $.post("/engine/ajax/filter.php", $("#filter").serialize(), function(response){
           
           setTimeout(function(){$('#dle-content').html(response); stopLoadingAnimation();}, 3000);
    });
             });
});
         
         
 function startLoadingAnimation() 
{
   $("#dle-content").append('<div id="res"><img src="http://katushka.in.ua/templates/katushka2/images/ajax-loader.gif" /></div>');
}
          
function stopLoadingAnimation() 
{
   $("#res").remove();
}var currentAjaxRequest;
$.ajaxPrefilter(function(options, originalOptions, jqXHR) {
    if(options.abortOnRetry) {
        if(currentAjaxRequest  && currentAjaxRequest.readyState != 4) {
        currentAjaxRequest.abort();
        }
    
    currentAjaxRequest = jqXHR;
    }
}); 
  
  $(document).ready(function () {
    var $form = $('#filter'),
        $controls = $form.find('input,select,textarea');
    $controls.on('change', function () {
        var $control = $(this);
        
        $control.prop('disabled', true)
        
        startLoadingAnimation();
        
        $.post(
            "/engine/ajax/filter.php",
            $("#filter").serialize(),
            function (response) {
                setTimeout(function () {
                    $('#dle-content').html(response);
                    stopLoadingAnimation();
                }, 3000);
        	}
        ).always(function () {        	
        	$control.prop('disabled', true)
        });
    });
});
function startLoadingAnimation() {
    $("#dle-content").append('<div id="res"><img src="http://katushka.in.ua/templates/katushka2/images/ajax-loader.gif" /></div>');
}
function stopLoadingAnimation() {
    $("#res").remove();
}// ...
var processing = false; // флаг
$controls.on('change', function() {
  if (processing) return; // если флаг есть, то выходим из обработчика
  processing = true; // устанавливаем флаг
  startLoadingAnimation();
  $.post("/engine/ajax/filter.php", $("#filter").serialize(), function(response) {
    processing = true; // снимаем флаг как только пришел ответ от сервера
    setTimeout(function() {
      $('#dle-content').html(response);
      stopLoadingAnimation();
      
      // или в этом месте (в зависимости от задачи)
    }, 3000);
  });
});
// ...