0

我有一系列从 sqlite 数据库创建的单选按钮

我正在使用 jquery 每个函数来遍历无线电组。对于每个组,如果有一个选中的项目,我将在数据库中插入一条记录,如下所示 -

$('input:radio:checked').each(function(Index) {
Index=Index+1; // to start at 1 not 0

var kind_id = $('input:radio[name='+Index+']:checked').val(); 
// get value of the checked radio button  which corresponds to 'kind' index in the database

var cat_id = $('input[name='+Index+']:radio:checked').attr('data-id'); 
// get the radio group name which corresponds to the category index in the database and, in turn, is the value of Index

tx.executeSql( 'INSERT INTO quotelink(ql_quote_id,ql_cat_id,ql_kind_id) Values (last_insert_rowid(),?,?)', [cat_id,kind_id], 
nullHandler,errorHandler , 
[],nullHandler,errorHandler);
}); //end each function

这工作正常,直到我删除一个类别。例如,如果我在数据库中有类别 1、3、4、5(我已删除 2)。当我触发该函数时,我按预期插入了四行,但 cat_id 列是 1、未定义、3、4 - 而不是 1、3、4、5。

即当Index=2 时,它正在寻找一个不存在的元素。我不知道下一步该做什么。

有点复杂-希望我已经解释过了,非常感谢任何帮助

4

1 回答 1

0

“未定义”值是正确的,导致您尝试访问不存在的无线电输入,因此 jquery/js 将返回“未定义”。

我认为它不适用于在循环中增加索引变量。为什么不使用循环中的 $(this) 对象来访问当前检查的无线电输入的所需属性?

尝试这个:

$('input:radio:checked').each(function(Index) {

  //Index=Index+1; // to start at 1 not 0
  var currentRadio = $(this);

  //var kind_id = $('input:radio[name='+Index+']:checked').val(); 

  var kind_id = currentRadio.val();

  // get value of the checked radio button  which corresponds to 'kind' 
  // index in the database


  //var cat_id = $('input[name='+Index+']:radio:checked').attr('data-id'); 

  var cat_id = currentRadio.attr('data-id');

  // get the radio group name which corresponds to the category index in the database
  // and, //in turn, is the value of Index

  //... insert into database 
}
于 2013-06-19T06:36:51.103 回答