2011-03-11 12 views
5

estoy usando el brillante BlockUI, y han configurarlo usando el valor por defectoDesactivar BlockUI con certeza llamadas Ajax

$(document).ajaxStart($.blockUI).ajaxStop($.unblockUI); 

Cuál es grande - excepto cuando agrego un elemento de autocompletar en la página, y luego el blockUI se inicia tan pronto como el usuario comienza a escribir. En lugar de establecer explícitamente lo que ajax llama para iniciar la interfaz de usuario del bloque, ¿alguien puede pensar en una forma de deshabilitar la interfaz de usuario bloqueada para ciertas funciones de ajax?

Respuesta

6

se podría hacer algo como esto:

var dontBlock = false; 

$(document).ajaxStart(function(){ 
    if(!dontBlock) 
     $.blockUI(); 
}).ajaxStop($.unblockUI); 

// And in the ajax methods (to be excluded), set dontBlock accordingly 

$('#autocomplete').keydown(function(){ 
    dontBlock = true; 
    $.ajax({ 
     // url, data etc. 
     success: function(){ dontBlock = false; } 
    }); 
}); 
23

En jQuery una llamada ajax acepta diferentes configuraciones un conjunto de pares clave/valor que configuran la petición Ajax. Todos los ajustes son opcionales

Ahora aquí tenemos los siguientes:

ajustes de nombre: mundial, Tipo: booleana, defecto: cierto

Descripción: Si disparar globa l Manejadores de eventos Ajax para esta solicitud. El defecto es cierto. Establezca en falso para evitar que se desencadenen los controladores globales como ajaxStart o ajaxStop. Esto se puede usar para controlar varios eventos Ajax.

Ejemplo:

$.ajax({ 
     global: false, 
     type: "POST", 
     url: 'ajax/test.html', 
     success: function(data) { 
      $('.result').html(data); 
      alert('Load was performed.'); 
     } 
}); 

El ejemplo de arriba se detendrá la ejecución de cualquier evento de inicio o detención Ajax como blockUI.

+0

¡Impresionante! Aprendí esto hoy ... :) –

Cuestiones relacionadas