如何从jquery中生成的列表中获取id

时间:2014-01-21 09:54:50

标签: javascript jquery checkbox

$ctr = 0;
foreach($authspons as $authspons_list){
   $ctr++;
   echo "<input type='checkbox' id='id_list'".$ctr."'"." name='authspons[]'"." class='list_check' value='".$authspons_list->authspons_position." ".$authspons_list->authspons_lname.",".$authspons_list->authspons_fname." ".$authspons_list->authspons_mname." ".$authspons_list->authspons_cmpny.'; '."'".">" .$authspons_list->authspons_position." ".$authspons_list->authspons_lname.",".$authspons_list->authspons_fname." ".$authspons_list->authspons_mname." ".$authspons_list->authspons_cmpny."</input> <br />";
  echo "<input type='text' class='text_list' id='tbox".$ctr."'"."name='authsponsid[]' value='".$authspons_list->authspons_id."; "."'"." >";
    }

我有一个来自数据库的生成列表,复选框包含个人详细信息,而文本框包含复选框中每个项目的“ID”。

这是我的jquery代码:

$('#list').click(function(){
var final = '';
var final2='';
$('.list_check:checked').each(function(){        
    var values = $(this).val();
    final += values;
var val_id = $('.text_list').val();
final2 +=val_id;
});
$("#coauth").val(final);
$("#coauthid").val(final2);
$("#coauthspons").modal("hide");
});

从复选框中获取价值是可以的。我的问题是:文本框的输出始终是检查的复选框数的最后一个值。

像这样:

1st checkbox = 1st textbox(value="1");
2nd checkbox = 2nd textbox(value="2");

当我检查这两个选项时,文本框仅导致:

1st checkbox = 1st textbox(value="2");
2nd checkbox = 2nd textbox(value="2");

如何获得每个预期复选框及其文本框值的结果?

2 个答案:

答案 0 :(得分:0)

此处var val_id = $('.text_list').val();

您为所有元素赋予相同的值,而不管其索引

试试这个

var val_id = $(this).next().val(); //this gives value of next i.e .text_list element

答案 1 :(得分:0)

$('#list').click(function(){
  var final = '';
var final2='';
  $('.list_check:checked').each(function(){        
    var raw_value = $(this).val();
    var id_value = raw_value.split("||");

    var values = id_value[1];
    final += values;
    var val_id = id_value[0];
    final2 +=val_id;
});
$("#coauth").val(final);
$("#coauthid").val(final2);
//alert(final2);
$("#coauthspons").modal("hide");
});

感谢#Bhadra的回答。它给了我一个想法但我找到了一个更好的解决方案来解决我自己的问题。我将所有值放在复选框中,然后使用split函数将“ID”与原始复选框值(fname,mname,lname)分开。