2012-01-27 8 views
1

ajaxリクエストを使って自動リフレッシュするページを作成しました。このページには多くのモーダルダイアログボックスがあります。jQuery UI ajaxリフレッシュ後に変わったダイアログ

私の問題は、最初の時間ページが読み込まれ、すべての作品が完璧だということです。しかし、それがajaxを介してリフレッシュされるとき、ダイアログボックスはautoOpen: falsemodal: trueを無視します。なぜ私は分かりませんか?ダイアログが作成され、このようになりますされているASPでページの読み込み中に

var intval; 
var xmlhttp; 
$('.ui-dialog').dialog({ 
    open: function(event, ui) { 
     stopTimer(); 
    }, 
    close: function(event, ui) { 
     startTimer(); 
    } 
}); 

function startTimer() { 
    intval = setInterval('ajaxRefresh()', 15000); 
}; 

function stopTimer() { 
    clearTimeout(intval); 
    if (xmlhttp) xmlhttp.abort(); 
}; 

function isDialogOpen() { 
    var value = false; 
    $('.ui-dialog').each(function() { 
     if ($(this).dialog('isOpen') == true) value = true; 
    }); 
    return value; 
}; 

function ajaxRefresh() { 
    xmlhttp = $.ajax({ 
     url: 'site.asp', 
     data: { 
      tab: 'hi', 
      p: 's', 
      a: 'open', 
      c: 'some', 
      h: 'thing' 
     }, 
     beforeSend: function() { 
      stopTimer(); 
      $('#timerimg').attr('src', 'img/icons/loading.gif'); 
     }, 
     error: function(xhr, thrownError) { 
      if (xhr.status !== 0) alert(xhr.status + ' - ' + thrownError); 
     }, 
     success: function(result) { 
      if (!isDialogOpen()) $('body').html(result); 
     }, 
     complete: function() { 
      $('#timerimg').attr('src', 'img/icons/stop.gif'); 
     } 
    }) 
}; 

$(document).ready(function() { 
    startTimer(); 
}); 

:作成されたどのように多くのダイアログ

$('#close1').dialog({ 
    modal: true, 
    draggable: false, 
    resizable: false, 
    autoOpen: false, 
    width: 400, 
    buttons: { 
     'close': { 
      text: 'Nej', 
      click: function() { 
       $(this).dialog('close'); 
      } 
     }, 
     'submit': { 
      text: 'Ja', 
      click: function() { 
       window.location = 'page.asp?p=s&a=open&c=some&h=thing&n=close&id=1' 
      } 
     } 
    } 
}); 
$('#close1Opener').live('click', function() { 
    $('#close1').dialog('open'); 
    return false; 
}); 

が依存:-(

は、JSコードを開始マイ

So:リクエストがあったときにページが更新されると、再び作成されたダイアログはすべてを無視します10およびmodal: true ...... draggableresizablewidthおよびbuttonsはまだまだ完璧です。

どうすればよいですか?

+0

私たちは答えを持っているかもしれませんが、誰かにとっては細かいコードを読むのは難しいです。 –

+0

編集に感謝します! :) – Behrens

+0

jqueryとjquery-uiのどちらのバージョンを使用していますか? – JSuar

答えて

1

jQueryダイアログのドキュメントhereを参照してください。

試してみることの1つは、$('#close1').dialog('destroy');を使用してダイアログを元の状態に戻すことです。

.live()もおそらく必要ではないので、可能であれば避けてください。 $('#close1Opener').click(function() {});を使用すると、よりクリーンな方法です。

+0

ダイアログボックスが破損しました:)ありがとうございました! :) – Behrens

関連する問題