2014-02-23 106 views
1

我一直在遇到這個問題。這是我的第一個phonegap應用程序,真的是我第一次使用jQuery和jQuery手機。Phonegap Jquery Mobile表單提交刷新

我創建了一個簡單的應用程序,我只想從用戶那裏獲取「跟蹤號碼」,然後將其提交給另一臺服務器上的服務器端腳本,並在同一頁面上顯示結果。

我已經嘗試了很多不同的方法,並提出一切工作的問題,但只有當您提交表單一次(它似乎重新加載),然後再次提交它。

main.js:

var app = { 

    initialize: function() {   

     $('#tracking-form').on('submit', function(e){  
      e.preventDefault(); 
      e.stopPropagation(); 
      e.stopImmediatePropagation(); 

      app.searchByTracking(); 

      return false; 
     }); 
    }, 

    searchByTracking: function() { 
     var formData = $("#tracking-form").serialize(); 

     $.ajax({ 
      type: "POST", 
      url: "http://newepicweb.com/bodypros/search.php", 
      cache: false, 
      data: formData, 
      success: function (result) { 
       $("#search-results").html(result); 
      }, 
      error: function (request,error) { 
       console.log("Error " + error); 
      }   

     }); 
    } 
};  

app.initialize(); 

search.html

<html> 
<head> 
<link rel="stylesheet" href="css/jquery.mobile-1.4.1.css"> 
<link rel="stylesheet" href="css/styles.css"> 
</head> 
<body> 

<!-- Start of first page: #one --> 
<div data-role="page" id="search" data-theme="b"> 

    <div data-role="header"> 
     <h1>Search by Tracking Number</h1> 
    </div><!-- /header --> 

    <div data-role="content" > 
     <h2>Instructions</h2> 

     <p>Click below to enter your tracking number, then press search to view the status of your vehicle.</p> 
     <div id="form"> 
      <form id="tracking-form" data-ajax='false'> 
       <div data-role="fieldcontain" class="ui-hide-label"> 
        <label for="username">Tracking Number:</label> 
        <input type="text" name="tracking-number" id="tracking-number" value="" placeholder="Tracking Number" data-theme='a' /> 
       </div> 
       <input type='submit' value='Search' /> 
      </form> 
     </div> 
     <div id="search-results"> 
     </div> 
     <p>&nbsp;</p> 
     <p><a href="menu.html" data-direction="reverse" data-role="button" data-theme="b">Back to Menu</a></p> 
    </div><!-- /content --> 
</div><!-- /page one --> 


<!-- Start of second page: #two --> 
<div data-role="page" id="results" data-theme="a"> 

    <div data-role="header"> 
     <h1>Body Pro's</h1> 
    </div><!-- /header --> 

    <div data-role="content" data-theme="a">  
     <h2>Vehicle Status</h2> 
     <p><a href="#search" data-role="button" data-theme="b">Search Again</a></p> 

    </div><!-- /content --> 

</div><!-- /page two --> 


<script src="lib/jquery-1.11.0.min.js"></script> 
<script src="lib/jquery.mobile-1.4.1.js"></script> 
<script src="lib/handlebars-v1.3.0.js"></script> 
<script src="js/storage/memory-store.js"></script> 
<script src="js/main.js"></script> 
</body> 
</html> 

基本上,我試圖從用戶那裏得到輸入,使用輸入獲取內容,然後顯示輸入用戶...

任何建議或信息將有所幫助。謝謝!

- 而且,也許它有什麼用..

$('#tracking-form').on('submit', function(e){ }) 

它似乎並沒有註冊,直到形式提交一次。我添加了console.log(),並且它在我第二次推送它後才被觸發。

<input type='button' value='Search' onclick="app.searchByTracking()" /> 

既然你是住在同一頁上,你實際上並不想提交表單,您:

回答

0

而是提交表單的,改變這種:

<input type='submit' value='Search' /> 

到只想調用從表單收集數據的函數,並從searchByTracking函數中自行提交。

3

您正在提交整個表格。所以它重新加載了你不想要的整個dom。

所以你應該使用簡單的按鈕,並使用Onclick函數。

像這個 -

<input type='button' value='Search' onclick="app.searchByTracking()" />