2011-10-02 99 views
4

我正在尝试设置BlockUI的最小显示但有问题。无论我在setTimeout中输入什么值,该元素都会立即解除封锁。如何为BlockUI设置最小延迟?

这里我设置为jQuery的给ajaxForm插件的选项:

var options = { 
      type: 'POST', 
      contentType: 'application/json; charset-utf-8', 
      dataType: 'json', 
      complete: function() { 
       setTimeout($('#MyElement').unblock(), 5000); 
      } 
     }; 

在这里,我展示上被点击时我提交按钮“MyElement”的BlockUI。

$('.submit').click(function() { 
      window.showBlockUI($('#MyElement')); 
     }); 

任何想法?谢谢。

+0

马特·鲍尔 - 不知道我的理解。如果我在提交时执行e.preventDefault(),那么blockUI将永远停留在那里,因为我没有从服务器获取响应。 – Mike

回答

1

您在调用setTimeout()中的函数时,未传递对函数的引用,因此它立即执行并将该函数的返回结果传递给setTimeout()。因此它立即执行。

它改成这样:

complete: function() { 
    setTimeout(function() {$('#MyElement').unblock()}, 5000); 
} 

或有点不太紧凑的形式在这里你可以更好的看到:

complete: function() { 
    setTimeout(function() { 
     $('#MyElement').unblock() 
    }, 5000); 
} 
+0

我非常喜欢stackoverflow。谢谢。 (这个答案将在9分钟后被接受) – Mike