2010-07-31 163 views
0

我有一个与复选框配对的类别列表。我找不到有关如何将所有选中的复选框存储在var中并将数据发送到服务器的任何文档。我需要从数据库中删除选定的类别。这是我正在处理的代码的一部分。Jquery选择多个复选框

var cat_id = $('check_box').attr("id"); //gets the id of the checked category 
var dataString = 'cat_id=' + cat_id; //should send all the selected checkbox IDs 
$('.delete').click(function() 
{ 
    $.ajax({ 
     type: "POST", 
     url: "edit_categories.php", 
     data: dataString, 
     cache: false, 
     success: function(html) 
     { 
      window.location.reload(true); 
     } 
    });//end ajax 
});//end click function 

的复选框是动态创建的使用:

<input type="checkbox" name="check_box" class="check_box" 
    id="<?php echo $cat_id; ?>" /> 

每个复选框都会有一个唯一的ID,多少他们是各不相同。

在edit_categories.php中,我只有一个用于删除cat_id = $ _POST ['cat_id']的类别的mysql,但我无法弄清楚如何从选定的复选框中获取所有ID。

回答

3

您可以使用.map()得到复选框的ID的字符串,如:

var cat_id = $(':checkbox:checked').map(function() { 
       return this.id; 
      }).get().join(','); 

这将产生一个字符串像"CheckBox1,Checkbox2,Checkbox3"发送服务器端。在那里,你可以在字符串上做一个.split(",")来得到一个ID数组。

+0

它的工作原理!非常感谢! :) – vii 2010-07-31 14:24:26

0

$(“形式”)序列化()可能是使用的 - 看看ajaxForm这是真棒......

为您复选框 - 将名称更改为“check_box []”和集cat_id的值与其ID相对。

然后,您应该能够访问$ _POST ['cat_id],它应该是发布值的数组。使用var_dump($ _POST ['cat_id'])检查它;

+0

谢谢!我会尝试这:)序列化()似乎是一个方便的功能 – vii 2010-07-31 15:15:50

0

尝试这样:

var keysToDelete = ''; 
$('.check_box:checked').each(function() { 
    keysToDelete+= $(this).attr("id"); 
}); 

dataString= 'cat_id='+keysToDelete; 
// continue down to the ajax post 
+0

酷这个作品呢!谢谢!!你知道如何在ID之间放置空格吗?它显示为cat_id = 1234567 – vii 2010-07-31 15:14:49

+0

更改此行:keysToDelete + =“,”+ $(this).attr(“id”),然后添加if(keysToDelete.length> 0)keysToDelete = keysToDelete.substr(1);每个功能结束后。 – Tahbaza 2010-07-31 20:56:17