2009-09-23 154 views
1

我發現this thread基本上我有同樣的問題。但他們的解決方案並不適合我。jQuery對話框第二次不開放

對話框第一次單擊提交按鈕時出現,但不是第二次。 我在表單提交後打開對話框。

UPDATE

我終於得到了它的工作。下面是正確的代碼:

if (jQuery('#registrationforms').length > 0) { 
    //instantiate the dialog 
    jQuery("#dialog").dialog({ modal:true, autoOpen:false }); 

    //Some more code here to call processRegistration function. 
    } 

    function processRegistration(instanceID, formData) 
    { 

    jQuery.post("mypath/jquery_bll.php", { instance: 'processRegistration', formData : formData, instanceID : instanceID }, 
     function(feedback) 
     { 
     jQuery('#dialog').text(feedback.message); 
     jQuery('#dialog').parent().addClass(feedback.type); 
     jQuery('#dialog').dialog('open'); 
     },"json"); 

    } 

由於我申請動態CSS類,我必須確保將其添加到外DIV其中$ .dialog創建包我的「對話」 DIV。

回答

1

不要使用dialog()來初始化對話框並同時打開它。我也犯了這個錯誤。

首先初始化對話框,然後在回調中打開它,像這樣:

jQuery('#dialog').dialog({ autoOpen: false }); 

function processRegistration(instanceID, formData) { 
jQuery.post(..., 
    function(feedback) { 
    var dialog = jQuery('#dialog'); 
    dialog.text(feedback.message); 
    dialog.addClass(feedback.type); 
    dialog.dialog('open'); 
    }, "json"); 
}; 
+0

dialog.attr('class',feedback.type)將覆蓋默認類。我需要添加一個類。你將如何打開對話框? – Steven 2009-09-23 22:20:55

+0

哎呀!編輯。 (attr() - > addClass(),加上打開) – 2009-09-23 22:54:38

+0

好的,謝謝。我仍然獲得與上面更新的代碼相同的結果。我仍然有同樣的問題 - 添加的類的css不會呈現。 – Steven 2009-09-24 16:36:43

4

我認爲RayLehman在您引用的帖子中高度投票回答是正確的解決方案。

jQuery UI的dialog()函數實際上創建了一些內容的對話框。你實際上並沒有在任何地方的對話框上調用「打開」。

一旦通過第一次調用dialog()創建對話框,您只需調用對話框(「打開」)或對話框(「關閉」),而不是每次都重新創建實際的對話框對象。

+0

Womp是正確的,YPU必須每次你需要它的時候esplicitely打開對話框。 – 2009-09-23 22:10:48

+0

我現在正在修改代碼。我現在想念的是根據反饋類型添加正確的類。 – Steven 2009-09-23 22:24:33

0

這聽起來像是你用init調用打開了你的open事件。您需要確保首先初始化對話框 - 通常將autoOpen屬性設置爲false - 然後有一個單獨的單擊事件來打開對話框。

閱讀this article來詳細解釋它。

相關問題