2012-03-28 75 views
0

我有以下问题:jQuery模态窗口打开不是第一次模态

我已经开了一个JQuery的对话,我想与其他模式对话框来覆盖这一点,并显示其他一些功能/信息覆盖它。

我使用ajax请求获取的数据填充第二个对话框。 问题是,第一个单击时第二个对话框不会打开模式。当我关闭它并重新打开它时,对话框是模态的。

我的代码看起来像如下: 我创建已经存在于人体中的对话框

function showMachineControlDialog(id) 
{  
    loadMachineControlDialog(id); 

    var buttonsOpts = {}; 
    buttonsOpts["Close"] = function() { $(this).dialog("close"); }; 
    $("#machine_control_box").dialog({ buttons : buttonsOpts }); 
    $("#machine_control_box").dialog({ width: 250, resizable: false }); 
    $("#machine_control_box").dialog("option", "title", "Control-Dialog"); 
    $("#machine_control_box").dialog({ zIndex: 2000 }); 
    $("#machine_control_box").dialog({ closeOnEscape: true }); 
    $("#machine_control_box").dialog({ modal: true }); 
    $("#machine_control_box").dialog({ autoOpen: false }); 
} 

在这里,我获取该被推到对话框中的数据:

function loadMachineControlDialog(id) 
{ 
    var paramlist = "id="+id; 
    $.ajax({ 
     type: "GET", 
     dataType: "html", 
     url: "getData", 
     data: paramlist, 
     contentType: "application/x-www-form-urlencoded;charset=UTF-8", 
     cache: false, 
     success: function(data){ 
      $("#machine_control_box").html(data).dialog("open"); 
      $("#machine_control_box").dialog({ position : 'center' }); 
     }, 
      error: function(data){ 
      showErrorDialog(data.responseText); 
     } 
    }); 
} 

我经过一番搜索后发现了这个问题。我必须设置模式属性BEFORE任何HTML插入到对话框中。如果之后设置了模式,则由于某种原因它将不起作用。

回答

2

在第一次打开对话框后,例如在调用loadMachineControlDialog(id);之后,将对话框设置为模态。

此外,你应该链中的.dialog选择这样的,并呼吁loadMachineControlDialog()

$("#machine_control_box").dialog({ 
    buttons : buttonsOpts, 
    width: 250, 
    resizable: false 
    "option", "title", "Control-Dialog" 
    zIndex: 2000; 
    closeOnEscape: true 
    modal: true 
    autoOpen: false }); 

loadMachineControlDialog(id); 
+0

感谢你解释为什么这个效应发生,尖端如何链的选项。 – Przemek 2012-03-28 10:26:15