2013-01-16 53 views
1

項目摘要:打開子彈出並將信息輸入到表單中。 Onsubmit將信息輸入到數據庫中,彈出窗口被隱藏,父頁面被隱藏。父頁面然後顯示來自數據庫的信息。HTML表單onsubmit有時只有工作

對於大多數情況下我的代碼有效,但在某些情況下,當我提交表單時,窗口關閉並且信息不會添加到數據庫中。我想知道是否需要在某處添加延遲,以便有時間將數據插入到數據庫中,但是我從來沒有使用任何時間代碼,並且不確定它需要去哪裏。有沒有人有任何想法,爲什麼它只會添加到數據庫有時?問題時間往往是表單被使用的前幾次,並且試圖正確地輸入相同的信息。

相關表格的代碼如下所示:

<script> 
    var db = window.openDatabase("DB1", "", "DB", 1024 * 1000) 

    function closeSelf() { 
     document.forms['moneyorder_form'].submit(); 
     hide(document.getElementById('AddMoneyOrderPopup')); 
     unHide(document.getElementById('MoneyOrdersMain')); 
    } 

    $(document).ready(function() { 
     $('#moneyorder_form').submit(function() { 

      insertMO($('#moCNumber').val(), $('#moCAmount').val(), "MoneyOrder"); 
      renderMoneyOrders(); 
      return false; 
     }); 
     renderMoneyOrders(); 
    }); 


</script> 

<div data-role="page" id="AddMoneyOrderPopup"> 
    div data-role="content" data-theme="a"> 
     <h2 style="text-align:center">Money Order</h2> 
     <form method="get" id="moneyorder_form" name="moneyorder_form" onsubmit="closeSelf()"> 
      <div class="ui-grid-a"> 
       <div class="ui-block-a"> 
        <p style="text-align:center; display:inline"><b>Number</b></p> 
        <p><input type="number" required="required" step="1" id="moCNumber" name="moCNumber"></p></div> 
       <div class="ui-block-b"> 
        <p style="text-align:center; display:inline"><b>Amount</b></p> 
        <p><input type="number" required="required" min=".01" step=".01" id="moCAmount" name="moCAmount"></p> 
       </div> 
       <div class="ui-block-a"> 
     <input type="submit" data-role="button" data-theme="a" value="Add" /> 
       </div> 
      </div> 
     </form> 
    </div> 
    </div> 
+0

我會確保數據不會被添加到數據庫,因爲他們可以被添加,但只是父頁面不顯示它們。 – akonsu

+0

我檢查過。他們根本沒有被添加。 – EzAnalyst

+0

然後你需要在服務器上調試表單提交。客戶端腳本和標記似乎不相關。 – akonsu

回答

0

你似乎使用新的HTML5 SQL API,而不是一臺服務器支持的數據庫。 如果是這樣的CAES,HTML5支持transaction函數接受可選的錯誤和成功回調:

db.transaction(function(tx) { 
    // executeSql 
}, opt_errorCallback, opt_successCallback); 

因此,而不是增加計時器,我將創建兩個回調,只顯示新的記錄,如果成功的回調有被稱爲。