用无线电组Jquery每个函数索引

时间:2013-06-18 16:07:44

标签: jquery sqlite radio-button each

我有一系列从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时,它正在寻找一个不存在的元素。我不知道下一步该做什么。

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

1 个答案:

答案 0 :(得分:0)

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

我认为在循环中递增索引var会有效。 为什么不在循环中使用$(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 
}