2012-01-09 33 views
1

$('#id').dialog('close')コマンドを使用せずに、ボタンクリックでJquery Dialog windowを手動で閉じようとしています。Jqueryダイアログウィンドウを手動で閉じる

なぜなら、ダイアログウィンドウが開かれたときに私はajax呼び出しを行い、応答で.dialogは機能しなくなったからです。私の問題は、ウィンドウ自体とオーバーレイのdivを削除してダイアログウィンドウを手動で閉じることができましたが、何らかの理由でバックグラウンドフォームが無効のままであることです。

すべてが削除されているように見えますが、まだボタンやフォームフィールドをクリックすることができないので、私はいくつかの部分が欠けているのだろうかと思っています。 Jqueryがモーダルダイアログウィンドウでバックグラウンドを無効にするために使用する他の要素について知っていますか?

更新 私は何とか手動でオーバーレイして、ウィンドウを削除した後にページを更新するための努力ににHomeControllerからのビューを返してみました。ページはまだ無効になっていますが、私はまだその理由を知る必要があります。

+1

は、それが簡単だけでAJAX呼び出しおよびshowダイアログ機能の両方が存在する中でスコープを作成することはありませんか? – PeeHaa

+0

どのようにajaxを読み込みますか?通常、この呼び出しの後で閉じる必要があります...そして、応答しなくなるフォームの場合、これはおそらくオーバーレイのためでしょうか? –

+0

このような範囲を作成する方法の例を教えてもらえますか? – Nozoku

答えて

1

Basedあなたの説明では、ajax呼び出しがjQueryUIダイアログの基になるdivを変更する何らかの方法でページを変更しているようです。 div(または他の要素)のdialogメソッドを呼び出した後、それは事実上jQueryUIに属し、.dialog("destroy")を呼び出すまでそれに触れてはいけません。

  1. して呼び出し、DIV、およびjQueryUIはその周りに追加のマークアップは、div要素が変更されただけで前に、AJAX呼び出しまたは

  2. の結果に触れていないことを確認してください:あなたは、どちらかでなければなりません$("#id).dialog("destroy");その後、ajax呼び出しがそれを完了した後で、ダイアログをもう一度作り直してください。

+0

これは機能します。ありがとう! – Nozoku

0

ボタン

$("#button").click(function() 
{ 
$("#id").dialog('close'); 
}); 

または

$(".selector").bind("dialogclose", function(event, ui) { 
    ... 
}); 

または多分私はあなたの質問を理解していない:)

+0

私はすでにこれを行っています。ダイアログウィンドウがインスタンス化されなくなったため、閉じる関数はAjax呼び出し後も機能しなくなりました。ダイアログウィンドウを再インスタンス化すると、望ましくない影響が発生します。 – Nozoku

+0

問題を正確に表示するためにjavascriptコード(ダイアログのみのajax)を提供してください。 –

0

、これは動作しませんどのようにわからないにクリック機能を割り当てます。

$("#modal").dialog({ 
     autoOpen : false, 
     modal : true 
    }); 

    // to open 
    $("#modal").dialog("open"); 

    // to close 
    $("#modal").dialog("close"); 
1

これを試してみてください:

window.parent.jQuery('#ModalDialog').dialog('destroy'); 
関連する問題