Jquery-Mobile:$ .mobile.showPageLoadingMsg()无效

时间:2011-12-13 10:24:35

标签: javascript jquery android jquery-mobile

我是新的jquery手机。我想使用jquery mobile的showPageLoadingMsg()。但它无法正常工作。以下是我的代码,请任何人帮助我。

code

< !DOCTYPE html>   
< html> 
< head> 
    < meta charset="utf-8"> 
    < meta name="viewport" content="width=device-width, initial-scale=1"> 
    < title>Single page template</title>
    < link rel="stylesheet" href="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.css" />
    < script type="text/javascript" src="http://code.jquery.com/jquery-1.6.4.min.js"></script>
    < script type="text/javascript" src="http://code.jquery.com/mobile/1.0/jquery.mobile-1.0.min.js"></script>
< /head> 
< body>
< !-- BMR Screen page -->

  < div data-role="page" id="BMR_screen">

  < div data-role="header" data-theme="e" id="hdrBMRScreen">

  < h1> BMR Screen< /h1>
  < /div>

  < div data-role="content" id="contentBMRScreen"> 

        < div data-role="fieldcontain">  

             < label for="BMR_age">Age(in years):</label> 

             < input type="text" id="BMR_age" /> 

        < /div> 

        < a href="#BMR_Result" onclick="BMR_Cal()"  data-role="button">submit</a> 

  < /div>

 < /div>

 < !-- End BMR Screen -->

   < div data-role="page" id="BMR_Result">

       < div data-role="header" data-theme="b" >

            < a data-role="button" data-rel="back" data-icon="back">back</a>

            <h1>BMR Result</h1> 

       < /div>

        < div data-role="content">      

          < p id="W_Range">Weight Range:</p>   

        < /div>
    < /div>

  < script type="text/javascript"> 

  var agevar;


  $(document).ready(function () {   
    // Initialize variables 
    ageVar = $('#BMR_age');     
  });

  function BMR_Cal()

 {    
    $.mobile.loadingMessage = "please wait...";     
    $.mobile.showPageLoadingMsg();

    if(ageVar.val() > 0)
    {       
        some code is there
        .............

        $.mobile.changePage( $("#BMR_Result"), { transition: "flip"} );       
    }

    $.mobile.hidePageLoadingMsg();

  }
  < /script>
  < /body> 
< /html>

感谢

3 个答案:

答案 0 :(得分:1)

我没有尝试过,但似乎你应该阻止锚点/按钮的默认动作(即自动跳转到#BMR_Result)。

<a href="#BMR_Result" onclick="BMR_Cal(); return false;" data-role="button">submit</a>

答案 1 :(得分:1)

这可能是因为你在同一个js方法中调用两个,所以浏览器没时间更新它的UI ...

更新:似乎还需要进行一些更改。这是我的函数的简化工作版本:

function BMR_Cal(){
    $.mobile.loadingMessage = "please wait...";
    var ageVar = $('#BMR_age');

    if (ageVar.val() > 0) {
        $.mobile.showPageLoadingMsg();
        $.ajax({
            url:"http://wwww.google.com",
            complete: function(){
                $.mobile.changePage($("#BMR_Result"), {transition: "flip"});
            }
        });
    }
    return false;
}

当然,您必须将.ajax调用替换为您自己的代码。

这是full working jsFiddle sample

答案 2 :(得分:0)

需要在mobileinit事件处理程序中定义$ .mobile.loadingMessage =“please wait ...”设置。在加载jQuery之后,但在加载jQueryMobile之前,该处理程序需要完全绑定。

它仍然很奇怪,它不适合你,因为你仍然应该得到默认页面加载文本,即'loading'。你有没有在其他地方将$ .mobile.loadingMessage设置为false?

无论如何,我正在按照书中所做的一切,但仍然无法让这种方法做我想做的事。