2013-04-22 156 views
4

如何在jQuery Mobile中關閉對話框頁面?jQuery Mobile關閉頁面對話框

在我的特殊情況下,我調用另一個頁面作爲頁面加載,然後過程完成後,我想將ajax頁面加載關閉,並再次出現一個對話框頁面,其中包含所有收到的數據回調ajax。

我的代碼:

$("#login").click(function(e){ 
LoadingPanel(); 
e.preventDefault(); 
    $.ajax({ 
     url:'http://www.myurl.com/soap/login.php', 
     dataType:'jsonp', 
     timeout: 15000, 
     cache: false, 
     data: dataString, 
     success:function(response){ 

      //Dialog page closed here 

      for(var i=0; i<response.length; i++){ 
        var str,str2,str3,str4,str5,str6,str7 = ""; 
        str  = response[i].NE; 
        str2 = response[i].EMAIL; 
        str3 = response[i].TIPE; 
        str4 = response[i].NAMA; 
        str5 = response[i].TELP; 
        str6 = response[i].DN; 
        str7 = response[i].DESC_LOGIN; 


       if(str=='-'){ 
        alert('Data does not match') 
       }else{ 
       var AllData = "" 
        AllData = 'Data1 : '+str+'\nData2 : '+str2+'\nData3 : '+str3+'\nData4 : '+str4+'\nData5 : '+str5 
        alert(AllData); 
        //How do I display this data into jquery mobile dialog? 
        } 
       } 

      }, 
      error: function (xhr, ajaxOptions, thrownError) { 
       if(thrownError==="timeout") { 
        alert("Cant connect"); 
       } else { 
        alert(t); 
       } 
      } 
    }); 
    }); 

要調用的頁面加載:

function LoadingPanel(){ 
    $.mobile.changePage("loading.html", { 
     role: "dialog" 
    }); 
} 

如何顯示這些數據轉化爲jQuery Mobile的對話框時,我的數據成功地接受 - >警報(ALLDATA)?

+0

使用'$( 「.selector」).dialog( 「親密」);' – Omar 2013-04-22 06:01:32

+0

@Omar什麼選擇?我打電話給一個頁面(loading.html) – 2013-04-22 06:33:03

+0

@BerthoJoris選擇器可以是頁面上的任何DOM元素。 – 2013-04-22 06:56:08

回答

6

一旦你使用$.mobile.changePage('loading.html', { role: 'dialog'});加載loading.html,jQuery Mobile的會給它一個data-role=dialog。您可以使用下面的方法關閉它。

$('[data-role=dialog]').dialog("close"); 

這將關閉對話框,實際上任何打開的對話框,即使沒有一個id它。

.selector手段,#id,類.classdata-role=something ...等

+0

在jqm更新他們的對話框模型之後它是否工作?,現在任何頁面都可以充當對話框。 – 2016-08-10 06:51:20

+0

@IftikarUrrhmanKhan for 1.4使用'$ .mobile.pageContainer.pagecontainer(「change」,「page id or URL」)''或'$,mobile.back()'。 – Omar 2016-08-10 10:58:12

1

您也可以調用對話框的close()方法以編程方式關閉對話框。

$(document).bind('pageinit', function() { 
    $("#bar").on('pagebeforeshow', function() { 
     $("#btnClose").bind('click', function() { 
      //alert('test'); 
      $("#bar").dialog('close'); 
     }); 

    }); 
}); 

DEMO

+0

如果對話框自動關閉怎麼辦? 沒有關閉按鈕應該被點擊。 在我的情況下,當ajax進程啓動時會出現對話框,並在ajax進程完成時自動關閉 – 2013-04-22 07:15:04

+0

@Mahesh我的對話框位於單獨的html頁面上。這種解決方案不適用於我的情況。那麼在我的情況下怎麼能做到這一點? – 2014-12-24 13:56:44