2014-07-11 77 views
0

由於JQM 1.4已改變了一些小工具,才能使用「對話」窗口小部件,有2個選項:jQuery Mobile的1.4關閉對話框編程

  1. 數據角色=「頁面」數據對話框=「真「
  2. 數據的rel =」彈出」

我使用的是第一種方式,所以,當用戶點擊‘OK’我的對話框的按鈕,我更新數據庫,如果一切正常,我想關閉對話框。

正如JQM doc中提到的,我嘗試過使用$(".selector").dialog("close"),但它拋出了Uncaught Error: cannot call methods on dialog prior to initialization; attempted to call method 'close'。一些示例代碼:

對話框HTML

<div id="manage-page" data-role="page" data-dialog="true" data-corners="false" data-close-btn="right" data-overlay-theme="b"> 
    <div data-role="header"> 
     <h1>Manage</h1> 
    </div> 
    <div data-role="content"> 
     <h3>Title</h3> 
     <input type="text" id="title" value=""/> 
     <a href="#" id="saveTitle" data-role="button">Save</a> 
    </div> 
</div> 

對話框JS

$(document).on('click', '#saveTitle', function(){ 
    var title= $('#title').val(); 

    $.ajax({ 
     type: "POST", 
     url: CUSTOM_URL, 
     success: function(data) { 
      if(data != -1) 
       $('#manage-page').dialog('close'); 
      else 
       // Some stuff 
     }, 
     error: function() { 
      console.log("ERROR saving title"); 
     } 
    }); 
}); 

有什麼不對?由於

UPDATE

我已經在我的打開按鈕使用data-rel="back"和刪除$('#manage-page').dialog('close');

+0

你的代碼被包裝在'$(文件)。就緒();'? – Oliboy50

+0

是的。它通常運行良好(這是整個項目的一小部分) – Hugo

+0

http://stackoverflow.com/questions/13520139/jquery-ui-dialog-cannot-call-methods-on-dialog-prior-to-initialization – Oliboy50

回答

0

我轉載的錯誤解決。你的對話框代碼是可以的,但你必須修復你使用的方式打開對話框。你必須添加選項:

$.mobile.changePage(domain() + '/private/manageDialog', {role:"dialog"}); 

或添加data-rel屬性:

<a href="#manage-page" data-rel="dialog">Open dialog</a> 
+0

您的第一個選項會讓我的對話變得醜陋(對話框的位置發生變化,關閉按鈕疊加...),當我嘗試關閉對話框時,我會看到空白頁。第二個,我仍然遇到同樣的錯誤。謝謝! – Hugo

+0

呃,它適用於我的測試;空白頁面看起來像是頁面/散列問題。你可以嘗試在對話框中添加'data-history =「false」'嗎? – Sga

+1

解決!我已經更新了我的答案。謝謝你們倆! – Hugo