Javascript将参数从表单传递给函数 - >更新DB

时间:2011-03-03 21:57:23

标签: javascript sqlite

任何人都可以帮忙。我有一个动态生成的表单,当它被提交时,它应该将值发送给一个函数并将它们添加回数据库。我遇到了真正的问题,看起来很简单:1。表格 - > 2.提交收到 - > 3.更新功能。代码如下:

动态生成表单:

   function renderResults(tx, rs) {
    e = $('#status');
    e.html("");
    for(var i=0; i < rs.rows.length; i++) {
      r = rs.rows.item(i);
  var f = $("<form>" +
"<input type=\"hidden\" name=\"rowId\" value=\"" + r.id + "\" />" +
"<input value=\"" + r.name + "\" name=\"name\" />" +
"<input value=\"" + r.amount + "\" name=\"amount\" />" +
"<input type=\"submit\" />" +
"</form>");
e.append("id: " + r.id, f);
f.submit(function(e)
{
updateRecord(this.rowId.value, this.name.value, this.amount.value);
});

        }
  }

处理表单提交并传递给函数:

$('#theform').submit(function() {
updateRecord($('#thename').val(), $('#theamount').val());

});

设置值的功能:

function updateRecord(id, name, amount) {
db.transaction(function(tx) {

       tx.executeSql('UPDATE groupOne SET (name, amount) VALUES (?, ?) WHERE id=?', [name, amount, id], renderRecords);

  });
}     

数据库更新代码将id设置为4作为测试,只是为了查看第4行是否发生了任何事情,我一直在摆弄这条线很长时间才能使它工作。如果我将其设置为:

tx.executeSql('UPDATE groupOne SET name = 4, amount = 5 WHERE id=?', [id], renderRecords);

它可以使用设定值,但有人可以帮我将表格值输入其中。

1 个答案:

答案 0 :(得分:1)

您缺少jQuery选择器中的行ID。你正在路过:

$('#thename').val();

但您的字段的ID为"thename" + r["id"]

'<input type="text" ... id="thename' + r['id'] + '" ...>'

您需要通过传递完整的输入ID来获取您的值。

$("#thename" + rowId).val();

编辑:仔细查看您的代码,我注意到您正在创建具有相同ID的多个表单,这是无效的HTML。我现在看到你每张唱片都有一张表格。好,只是从表格及其输入中丢失了id。而是使用输入名称。

var f = $("<form>" +
    "<input type=\"hidden\" name=\"rowId\" value=\"" + r.id + "\" />" +
    "<input name=\"name\" />" +
    "<input name=\"amount\" />" +
    "<input type=\"submit\" />" +
    "</form>");
e.append("id: " + r.id, f);
f.submit(function(e)
{
    updateRecord(this.rowId.value, this.name.value, this.amount.value);
});