我在填充所有数据(文本框,下拉菜单等等)之前显示JQuery对话框()的问题。
我只是打电话:
$("#myDiv").dialog("open") is called
然后在对话框属性下:
$("#myDiv").dialog({
title: "Edit User",
autoOpen: false,
height: 500,
width: 500,
modal: true,
open: function(event,ui){
url = "/controller/action" + param;
$(this).load(url);
...various $.ajax and $.GetJson calls to populate form drop down menus and other fields...},
buttons: {
Cancel: function () {
$(this).dialog("close");
}
},
close: function () {
allFields.val("").removeClass("ui-state-error");
}
});
这样一个对话框打开,大约一秒后闪烁并填充数据。有时它会滞后,数据根本不会进入字段。在最终填充对话框之前,我可能需要多次关闭/重新打开对话框。 非常令人沮丧。
最简单的方法是什么?我希望每次都能正确填充对话框弹出窗口,并且在它准备就绪之前不要显示。
答案 0 :(得分:1)
问题在于:
open: function(){
...various $.ajax and $.GetJson calls to populate form drop down menus and other fields...},
不要在打开时填充,在创建
上填充create: function(){
...various $.ajax and $.GetJson calls to populate form drop down menus and other fields...},
答案 1 :(得分:1)
你可以在Ajax / Json调用之前尝试BlockUI插件并阻塞它们,然后在它们之后解锁。这也允许您在对话框上显示加载div。
$.blockUI()
// ajax/json calls
$.unblockUI();