项目摘要:打开子弹出窗口并将信息输入到表单中。提交信息输入到数据库中,隐藏弹出窗口并取消隐藏父页面。然后父页面显示数据库中的信息。
在大多数情况下,我所使用的代码,但在某些情况下,当我提交表单时窗口关闭,信息不会添加到数据库中。我想知道是否需要在某处添加延迟以便有时间将数据插入数据库,但我从未使用任何时序代码,并且不确定它需要去哪里。有没有人知道为什么它有时只会添加到数据库?问题时间往往是表单使用的前几次以及尝试相互输入相同的信息时。
与表单相关的代码如下所示:
<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 :(得分:0)
您似乎使用的是新的HTML5 SQL API,而不是服务器支持的数据库。
如果这是caes,HTML5支持transaction
函数,该函数接受可选错误和成功回调:
db.transaction(function(tx) {
// executeSql
}, opt_errorCallback, opt_successCallback);
因此,如果调用成功回调,我将创建两个回调而不显示新记录,而不是添加定时器。