2010-08-26 42 views
0

我有一大堆复选框和一个包含CSV数据的隐藏字段。基本上,我需要根据隐藏字段的值被选中的复选框:如何使用jQuery从隐藏的csv字段填充一系列复选框

<form> 

    <input type="checkbox" id="01" name="01" /> 
    <input type="checkbox" id="02" name="02" /> 
    <input type="checkbox" id="03" name="03" /> 

    <input type="hidden" value="03,01," /> 

</form> 

因此,在上述复选框01和03需要例如要当页面加载完成后打勾。我还需要确保当复选框的值发生变化时,隐藏的CSV字段也会发生变化(尽管这可能在表单提交时完成)。

我有限的jQuery知识让我无处可寻,任何帮助都将不胜感激。 (我知道一些这是最好的服务器端完成,但我没有任何访问,但JavaScript)。

下面的答案大部分是我想要的。我认为使用创建的变量,应该可以在表单提交时重新填充CSV字段。即使用selected_ids将复选框的id添加到CSV的末尾(如果它们尚不存在)。这可以做到吗?

回答

1
var csvValue = $('#csv-input').val(); 
var selected_ids = csvValue.split(','); 
for (var i = 0; i < selected_ids.length; i++) 
{ 
    var selected_id = selected_ids[i]; 
    $('#' + selected_id).attr('checked', 'checked'); 
} 
+0

好的,谢谢。像我这样的白痴跟我说话。我可以看到'selected_ids'返回#csv-input中所有CSV数据的数组,但是没有检查具有相应ID的复选框。我尝试将第五行更改为 $('#'+'0'+ i).attr('checked','checked'); 但是,只检查前两个复选框(该阵列的总长度是多少?) 是否有可能重新工作上面,使所有的复选框的IDS可以是任何任意的(即更具描述性的),而仍然保持该代码的简洁性? – CherryFlavourPez 2010-08-27 09:26:36

+0

我编辑了代码,它无法正常工作。现在,它从selected_ids中检索id。您可以使用任何id名称,而不仅仅是数字。 – Sjoerd 2010-08-27 12:00:08

+0

非常感谢你,那很完美。这取决于你如何分离该IDS 抛出了一个错误 VAR tempIdStr + =“ID”,//或“身份证”: – CherryFlavourPez 2010-08-27 13:59:10

0
$(':checkbox').bind('change', function(event){ 
    if (this.checked == true){ 
     // add to hidden field 
     var tempIdStr = $('#cvs-input').val(); 
     // if not in hidden value already 
     if (tempIdStr.indexOf(this.id) > -1){ 
      tempIdStr += "id,"; // or ", id" depending on how you are seperating the ids 
     $('#cvs-input').val(tempIdStr); 
     } 
    } else { 
    // remove from hidden field 
     var tempIds = $('#cvs-input').val().split(','); 
     var index = tempIds.indexOf(this.id); 
     if (index > -1){ 
      tempIds.splice(index, 1); 
      $('#cvs-input').val(tempIds.join(','); 
    } 
}); 
+0

没有测试过这一点,但我认为这应该工作 – Nimnam1 2010-08-27 15:51:57

+0

这条线。这部分究竟做了什么,我该如何修改它? – CherryFlavourPez 2010-08-27 16:09:33

+0

cvs-input的值是用逗号分隔的ID列表。取决于该值是否已经在列表末尾有一个逗号,您不想添加另一个,因为它看起来像exp。 01,02然而,如果你最后没有添加逗号,你需要在你添加的id开头加一个逗号。 – Nimnam1 2010-08-27 17:22:56

相关问题