我有一系列从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时,它正在寻找一个不存在的元素。我不知道下一步该做什么。
有点复杂 - 希望我已经解释好了,非常感谢任何帮助
答案 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
}