用jQueryselectcheckbox组的值

我正在使用Zend_Form输出一组checkbox:

<label style="white-space: nowrap;"><input type="checkbox" name="user_group[]" id="user_group-20" value="20">This Group</label> 

使用正常的HTTP Post这些值作为数组传递,但是当我有点难以理解如何使用jQuery获取所有的值。 我想我可以select使用的组:

 $("input[@name='user_group[]']").val() 

但只是抓住列表中第一个checkbox的值,而不pipe是否选中。 有任何想法吗?

您可以使用选中的select器来仅抓取选定的select(否定需要知道计数或自己遍历它们):

 $("input[name='user_group[]']:checked") 

使用这些选中的项目,您可以创build这些值的集合或者对集合进行一些操作:

 var values = new Array(); $.each($("input[name='user_group[]']:checked"), function() { values.push($(this).val()); // or you can do something to the actual checked checkboxes by working directly with 'this' // something like $(this).hide() (only something useful, probably) :P }); 

我不确定select器中使用的“@”。 至less在最新的jQuery中,我不得不删除@以使其与两个不同的checkbox数组一起工作,否则为每个数组select所有选中的项:

 var items = []; $("input[name='items[]']:checked").each(function(){items.push($(this).val());}); var about = []; $("input[name='about[]']:checked").each(function(){about.push($(this).val());}); 

现在两个,项目和关于工作。

使用.map() (从http://api.jquery.com/map/的示例中调整):;

 var values = $("input[name='user_group[]']:checked").map(function(index,domElement) { return $(domElement).val(); }); 

使用map而不是each都可以避免创build数组的步骤:

 var checkedCheckboxesValues = $('input:checkbox[name="groupName"]:checked') .map(function() { return $(this).val(); }).get(); 

从文档的map()页面:

通过一个函数传递当前匹配集合中的每个元素,产生一个包含返回值的新的jQuery对象

get()将这些值转换为一个数组。

米塔dzenyu mese。 其实

 var selectedGroups = new Array(); $(".user_group[checked]").each(function() { selectedGroups.push($(this).val()); }); 

我刚刚缩短了我select的答案:

 var selectedGroups = new Array(); $("input[@name='user_group[]']:checked").each(function() { selectedGroups.push($(this).val()); }); 

它就像一个魅力,谢谢!

我不完全确定你想如何“抢”价值。 但是如果你想迭代你可以使用的checkbox,像这样:

 ("input[@name='user_group[]']").each( function() { alert($(this).val()); }); 

当然,更好的select器是可用的:

 $(':checkbox') 

你可以有一个JavaScriptvariables来存储发送的checkbox的数量,即在页面的<head>中:

 <script type="text/javascript"> var num_cboxes=<?php echo $number_of_checkboxes;?>; </script> 

所以,如果有10个checkbox,从user_group-1user_group-10 ,在javascript代码中,您将以这种方式获得它们的值:

 var values=new Array(); for (x=1; x<=num_cboxes; x++) { values[x]=$("#user_group-" + x).val(); } 
 var values = $("input[name='user_group']:checked").map(function(){ return $(this).val(); }).get(); 

这将给你在数组中选中的框的所有值。

 $(document).ready(function(){ $('#btnskillgroup').click(function(){ getCheckedGroups('skills'); }); $('#btncitiesgroup').click(function(){ getCheckedGroups('cities'); }); var getCheckedGroups = function(groupname){ var result = $('input[name="'+groupname+'"]:checked'); if (result.length > 0) { var resultstring = result.length +"checkboxes checked <br>"; result.each(function(){ resultstring += $(this).val()+" <br>"; //append value to exsiting var }); $('#div'+groupname).html(resultstring); }else{ $('#div'+groupname).html(" No checkbox is Checked"); } }; }); 
 <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script> Skills:<input type="checkbox" name="skill" value="Java"> Java <input type="checkbox" name="skill" value="Jquery"> Jquery <input type="checkbox" name="skill" value="PHP"> PHP <br> <input type="checkbox" name="cities" value="Pune"> Pune <input type="checkbox" name="cities" value="Baramati"> Baramati <input type="checkbox" name="cities" value="London"> London <input type="submit" id="btnskillgroup" value="Get Checked Skill group"> <input type="submit" id="btncitiesgroup" value="Get cities checked group"> <div id="divskills"></div> <div id="divcities"></div>