2011-02-01 61 views
0

我在模态模式模式下使用jQuery-UI对话框在页面上显示几个“编辑”表单。DOM更新后jQuery-UI对话框中断

截至目前编辑表单被加载到通过对话股利和Ajax调用。所述表格也通过ajax提交。将ajax函数调用回另一个函数,该函数使用新的编辑数据更新主页面的DOM。

我的问题是,我以后无论是DOM更新失去了参考UI对话框。那么问题是,我不能再在对话中调用方法(I.E.'close')。

如果我重新初始化的对话框中,我遇到了在那里通过AJAX提交我的形式,使所有呼叫的问题多次......仿佛形式势必多次对话。

有没有办法来解决这个问题和DOM更新后,保持我参考了对话?

继承人一些代码... 初始化对话框上的文件准备好。

$('#dialog').dialog({   
    autoOpen: false,   
    modal: true, 
    draggable: false, 
    resizable: false, 
    height: 450, 
    width: 550, 
}); 

按钮来打开对话框并加载编辑表单...

('#editInfo').live("click", function() { 
    $('#dialog').dialog('open') 
    $.ajax({ 
     type: 'GET', 
     url: '../info/edit', 
     data: {}, 
     success: function (response) { 
      $('#dialog').html(response);//loads the partial edit view into the dialog div...works fine to here. 
      } 
    }); 
    return false; 
}); 

后表单被提交此功能被称为成功更新dom和主页...

function infoUpdate(response) { 
    $('#dialog').dialog('close'); 
    $('#info').html(response); 
} 

DOM获取调用后更新的罚款,但该对话框不会关闭...

编辑: 我要指出,我使用asp.net MVC 3加载到对话框编辑表单是一个局部视图,并提交后,得到更新的主要页面上的元素也有部分view..not知道这是否事项

EDIT 2 发现一个solution..posted的答案,但有新的问题(参考下面的答案)

+0

我认为我们将需要看到的密码 - 至少部分初始化对话框并修改DOM。 – 2011-02-01 14:34:50

回答

1

我已经初始化Ajax调用

('#editInfo').live("click", function() { 
    $('#dialog').dialog('open') 
    $.ajax({ 
     type: 'GET', 
     url: '../info/edit', 
     data: {}, 
     success: function (response) { 
     $('#dialog').html(response); 
     $('#dialog').dialog({   
      autoOpen: true,   
      modal: true, 
      draggable: false, 
      resizable: false, 
      height: 450, 
      width: 550, 
     }); 

     } 
}); 
return false; 

})的成功,函数内部的模态对话框固定这一点;

这允许对话框在提交回调触发时关闭,这解决了我在问题中提出的问题。但是,我在多次提交表单时与多次打开的模式一起出现问题.... I.E。每次打开/加载对话框时,表单都会提交一次。尽管我在表单回调中破坏了对话框,但发生了这种情况。我可能需要打开一个新的问题,针对此问题,除非有人速战速决...

形式提交的回调......

function infoUpdate(response) { 
    $('#dialog').dialog('destroy'); 
    $('#info').html(response); 
}