使用jQuery获取所选复选框的值

时间:2012-07-02 11:29:50

标签: javascript jquery

我想遍历checkboxgroup'locationthemes'并构建一个包含所有选定值的字符串。 因此,当选中复选框2和4时,结果将是:“3,8”

<input type="checkbox" name="locationthemes" id="checkbox-1" value="2" class="custom" />
<label for="checkbox-1">Castle</label>
<input type="checkbox" name="locationthemes" id="checkbox-2" value="3" class="custom" />
<label for="checkbox-2">Barn</label>
<input type="checkbox" name="locationthemes" id="checkbox-3" value="5" class="custom" />
<label for="checkbox-3">Restaurant</label>
<input type="checkbox" name="locationthemes" id="checkbox-4" value="8" class="custom" />
<label for="checkbox-4">Bar</label>

我在这里查了一下:http://api.jquery.com/checked-selector/但是没有示例如何按名称选择复选框组。

我该怎么做?

12 个答案:

答案 0 :(得分:150)

在jQuery中只需使用像

这样的属性选择器
$('input[name="locationthemes"]:checked');

选择名为“locationthemes”的所有选中输入

console.log($('input[name="locationthemes"]:checked').serialize());

//or

$('input[name="locationthemes"]:checked').each(function() {
   console.log(this.value);
});
  

Demo


VanillaJS

[].forEach.call(document.querySelectorAll('input[name="locationthemes"]:checked'), function(cb) {
   console.log(cb.value); 
});
  

Demo


在ES6 /传播运营商

[...document.querySelectorAll('input[name="locationthemes"]:checked')]
   .forEach((cb) => console.log(cb.value));
  

Demo

答案 1 :(得分:30)

$('input:checkbox[name=locationthemes]:checked').each(function() 
{
   // add $(this).val() to your array
});

工作Demo

OR

使用jQuery的is()函数:

$('input:checkbox[name=locationthemes]').each(function() 
{    
    if($(this).is(':checked'))
      alert($(this).val());
});

答案 2 :(得分:12)

使用jquery&#39; map函数

var checkboxValues = [];
$('input[name=checkboxName]:checked').map(function() {
            checkboxValues.push($(this).val());
});

答案 3 :(得分:12)

映射数组是最快最干净的。

var array = $.map($('input[name="locationthemes"]:checked'), function(c){return c.value; })

将返回值为数组:

array => [2,3]

假设城堡和谷仓被检查而其他人没有。

答案 4 :(得分:10)

$("#locationthemes").prop("checked")

答案 5 :(得分:4)

You can also use the below code
$("input:checkbox:checked").map(function()
{
return $(this).val();
}).get();

答案 6 :(得分:1)

所以一行:

var checkedItemsAsString = $('[id*="checkbox"]:checked').map(function() { return $(this).val().toString(); } ).get().join(",");

..关于选择器[id*="checkbox"]的注释,它会抓取任何带有“checkbox”字符串的项目。这里有点笨拙,但如果你试图从.NET CheckBoxList中提取所选值,那真的很好。在这种情况下,“复选框”将是您为CheckBoxList控件提供的名称。

答案 7 :(得分:1)

Source - More Detail

使用jQuery获取所选复选框的值

然后,我们编写jQuery脚本以使用jQuery each()获得数组中选定的复选框值。使用此jQuery函数,它运行循环以获取检查的值并将其放入数组中。

<!DOCTYPE html>
    <html lang="en">
    <head>
    <meta charset="utf-8">
    <title>Get Selected Checkboxes Value Using jQuery</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
    <script type="text/javascript">
        $(document).ready(function() {
            $(".btn").click(function() {
                var locationthemes = [];
                $.each($("input[name='locationthemes']:checked"), function() {
                    locationthemes.push($(this).val());
                });
                alert("My location themes colors are: " + locationthemes.join(", "));
            });
        });
    </script>
    </head>
    <body>
        <form method="POST">
        <h3>Select your location themes:</h3>
        <input type="checkbox" name="locationthemes" id="checkbox-1" value="2" class="custom" />
        <label for="checkbox-1">Castle</label>
        <input type="checkbox" name="locationthemes" id="checkbox-2" value="3" class="custom" />
        <label for="checkbox-2">Barn</label>
        <input type="checkbox" name="locationthemes" id="checkbox-3" value="5" class="custom" />
        <label for="checkbox-3">Restaurant</label>
        <input type="checkbox" name="locationthemes" id="checkbox-4" value="8" class="custom" />
        <label for="checkbox-4">Bar</label>
        <br>
        <button type="button" class="btn">Get Values</button>
    </form>
    </body>
    </html>

答案 8 :(得分:0)

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

答案 9 :(得分:0)

var SlectedList = new Array();
$("input.yorcheckboxclass:checked").each(function() {
     SlectedList.push($(this).val());
});

答案 10 :(得分:0)

jQuery 3.3.1,单击按钮时获取所有选中复选框的值

$(document).ready(function(){
 $(".btn-submit").click(function(){
  $('.cbCheck:checkbox:checked').each(function(){
	alert($(this).val())
  });
 });			
});
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<input type="checkbox" id="vehicle1" name="vehicle1"  class="cbCheck" value="Bike">
  <label for="vehicle1"> I have a bike</label><br>
  <input type="checkbox" id="vehicle2" name="vehicle2"  class="cbCheck" value="Car">
  <label for="vehicle2"> I have a car</label><br>
  <input type="checkbox" id="vehicle3" name="vehicle3"  class="cbCheck" value="Boat">
  <label for="vehicle3"> I have a boat</label><br><br>
  <input type="submit" value="Submit" class="btn-submit">

答案 11 :(得分:0)

一种更现代的方法:

const selectedValues = $('input[name="locationthemes"]:checked').map( function () { 
        return $(this).val(); 
    })
    .get()
    .join(', ');

我们首先找到具有给定名称的所有选定复选框,然后jQuery的map()遍历每个复选框,对其调用回调以获取值,然后将结果作为一个新的jQuery集合返回,该集合现在包含复选框值。然后,我们对其调用get()以获取一个值数组,然后join()将它们连接成一个字符串-然后将其分配给常量selectedValues。