2011-03-03 73 views
1

任何人都可以幫忙。我有一個動態生成的表單,當它被提交時,它應該將值發送給一個函數並將它們添加回數據庫。我有真正的問題得到這個工作,它似乎很簡單:1.表單 - > 2.提交收到 - > 3.更新功能。該代碼是下面:Javascript將參數從表單傳遞到函數 - >更新DB

動態生成的形式:

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); 

    }); 
}  

的DB更新代碼的ID設置爲4作爲測試只是爲了查看是否有任何事情發生在第4行,我一直在擺弄w ith這條線可以使它工作。如果我將它設置爲:

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

它將使用設定值,但有人可以幫助我獲取表格值。

回答

1

您在jQuery選擇器中缺少行標識。你逝去的:

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

但你的領域有"thename" + r["id"]一個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); 
}); 
+0

好的地方,謝謝。我一直在看這個太久了。這應該如何與updateRecord函數一起使用?函數updateRecord(thename,theamount){? – mao 2011-03-03 22:43:49

+0

@ m1sco - 你想更新每條記錄嗎?聽起來就像你想循環訪問記錄併爲'rs'中的每一行調用updateRecord。 – gilly3 2011-03-03 22:47:12

+0

我試圖實現一次更新個人記錄,如果可能的話?道歉,如果我沒有解釋得很好,來源是在這裏:http://pastebin.com/NhB4Ue8q – mao 2011-03-03 22:55:16