2011-02-01 8 views
0

モーダルモーダルモードでjQuery-UIダイアログを使用して、自分のページに複数の「編集」フォームを表示しています。DOM更新後にjQuery-UIダイアログが壊れる

現在、編集フォームはダイアログdivビアと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は、その呼び出しの後に罰金更新されますが、ダイアログがない近い...

EDIT行います を私はasp.net MVC 3]ダイアログにロードされた編集フォームを使用していますことを言及する必要があります部分図であり、これは

EDIT 2 は答えが、新しいものとしてsolution..posted認める事項場合インクルードが提出した後、メインページに更新されます要素はまた、部分的view..not確信しています問題(下記の回答を参照)

+0

...フォームがコールバックを提出

...この問題のための新しい質問を開く必要があるかもしれません少なくともダイアログを初期化しDOMを変更する部分。 –

+0

@Jeff Sternal ...質問に追加しました – stephen776

+0

これには解決策が必要です...今は2日間それを行っています... – stephen776

答えて

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; 

})の成功関数内でモーダルダイアログを初期化することによって、これを修正しました。

これは、私の質問で私が提起した問題を解決する送信コールバックが発生すると、ダイアログを閉じることができます。しかし、私はモーダルが複数回開かれていることに関連して、フォームを複数回提出することに問題があります。フォームは、ダイアログがオープン/ロードされるたびに1回送信されます。これは私がフォームコールバック内のダイアログを明白に破棄したにもかかわらず起こります。で - 誰かがクイックフィックスを持っていない限り、私たちはコードを参照してくださいする必要があるとしていると思います

function infoUpdate(response) { 
    $('#dialog').dialog('destroy'); 
    $('#info').html(response); 
} 
関連する問題