2011-08-18 59 views
2

我有一個表,當任何行被點擊時,啓動一個jQueryUI模式對話框,允許用戶編輯該記錄。我用下面的腳本,似乎工作,成功加載使用AJAX相關記錄的詳細信息:jQueryUI模式對話框中的腳本只能工作一次

$("#datatbl tr").bind('click', function() {   
     var url = 'item_edit.asp?id='+$(this).attr("data-myid"); 
     var dialog = $('<div style="display:hidden" title="Record details:"></div>').appendTo('body'); 
     // load remote content 
     dialog.load(
      url, 
      {}, 
      function (responseText, textStatus, XMLHttpRequest) { 
       dialog.dialog({   
        height: 440, 
        width: 550, 
        autoOpen: false, 
        modal: true, 
        buttons: { 
         "Update this record": function() { 
         $('#editform').submit(); 
          }, 
         Cancel: function() { 
         $(this).dialog("close"); 
         } 
        } 
     }); 
     dialog.dialog('open'); 
      } 
     ); 
     //prevent the browser to follow the link 
     return false; 
}); 

它工作正常,我第一次點擊的記錄,但如果我點擊取消,並嘗試編輯再創紀錄,對話框確實出現(具有正確的記錄細節),但是,對話框內沒有任何腳本工作 - 例如:有一個jqueryUI datepicker輸入和一些驗證。

沒有javascript錯誤,並且從我對FireBug的有限理解中,我無法發現任何錯誤,所以我將不勝感激一些建議如何繼續,謝謝!

編輯:啊!有時候,需要在這裏輸入一些信息來發現顯而易見的東西。我剛剛意識到爲對話框創建的DIV在框關閉時不會被破壞。我已經添加了一條線來做到這一點,它現在可以工作。感謝收聽。 :)

以供將來參考,我添加了一個ID在「VAR對話」創建的DIV和取消功能刪除它:

Cancel: function() { 
         $(this).dialog("close"); 
         $('#dialogbox').remove(); 
         } 

我還是很感激,如果有人提出一個更好的處理這種行爲的方式。

+0

你應該添加您的編輯到答案,並接受了答案。 – Chamilyan

+0

我試過了,但需要等8個小時。我會去做,但同時我會編輯原文,謝謝。 – Stevemid

回答

1

我解決了這個問題:當對話框關閉時,爲對話框創建的DIV不會被破壞。

我添加了一個ID在「VAR對話框」創建DIV並刪除在取消功能的DIV:

Cancel: function() { 
         $(this).dialog("close"); 
         $('#dialogbox').remove(); 
         } 
0

您只能一次創建對話框,而不是每次載入其內容,只需將autoOpen設置爲false即可。

<div id="dialog"> 
    <div id="content" style="display:hidden" title="Record details:"></div> 
</div> 

$('#dialog').dialog({ 
    height: 440, 
    width: 550, 
    autoOpen: false, 
    modal: true, 
    buttons: { 
     "Update this record": function() { 
      $('#editform').submit(); 
     }, 
     Cancel: function() { 
      $(this).dialog("close"); 
     } 
    } 
}); 
$("#datatbl tr").bind('click', function() {   
    var url = 'item_edit.asp?id='+$(this).attr("data-myid"); 
    // load remote content 
    $('#content').load(url); 
    $('#dialog').dialog('open'); 
    return false; 
}}; 
+0

將autoOpen 設置爲false爲。打開對話框不是問題,這是事實上,如果打開,關閉然後再次打開,盒子不起作用。 (往上看)。感謝您的回覆 – Stevemid