Javascript передача параметров из формы в функцию -> обновить БД - PullRequest
1 голос
/ 04 марта 2011

может кто-нибудь помочь, пожалуйста. У меня есть форма, генерируемая динамически, когда она отправляется, она должна отправлять значения в функцию и добавлять их обратно в базу данных. У меня есть реальные проблемы, заставляющие это работать, это кажется простым: 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);

  });
}     

В коде обновления БД установлен идентификатор 4 в качестве теста, чтобы посмотреть, происходит ли что-нибудь со строкой 4, я годами возился с этой строкой, чтобы заставить ее работать. Если я установлю его на:

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

он будет работать с заданными значениями, но может кто-нибудь помочь мне вставить значения формы в него, пожалуйста.

1 Ответ

1 голос
/ 04 марта 2011

Вам не хватает идентификатора строки в вашем селекторе jQuery. Вы проезжаете:

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

Но у вашего поля есть идентификатор "thename" + r["id"]:

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

Вам необходимо получить значение, передав полный идентификатор ввода.

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

Редактировать: Если присмотреться к вашему коду более внимательно, я заметил, что вы создаете несколько форм с одинаковым идентификатором, который является недопустимым html. Теперь я вижу, что у вас есть одна форма на запись. Хорошо, просто потеряйте идентификатор из формы и ее входных данных. Вместо этого используйте имена для входных данных.

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);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...