2012-07-02 101 views
55

我想遍歷複選框組'locationthemes'並構建一個包含所有選定值的字符串。當複選框2和4被選爲 那麼結果將是:「3,8」使用jQuery獲取所選複選框的值

<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/但有沒有例子,如何選擇由它的名字checkboxgroup。

我該怎麼做?

回答

125

在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

+4

你,我的朋友,是一個拯救生命的人。 – Haring10

+0

尤其我喜歡使用控制檯日誌的想法。感謝那。 –

24
$('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()); 
}); 

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

如何將此結果分配到變量 –

10

使用jQuery的map功能

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

中,同時瞭解在此示例中checkboxName應該是「locationthemes」 – hrabinowitz

1

因此,所有在同一行:

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

..A注意有關選擇[id*="checkbox"],它會抓住任何物品字符串「複選框」在其中。這裏有點笨拙,但如果你想從.NET CheckBoxList之類的東西中拉出選定的值,這真的很好。在這種情況下,「複選框」就是您給CheckBoxList控件的名稱。

6

映射數組是最快和最乾淨的。

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

將返回值作爲像的數組:

array => [2,3] 

假設城堡和穀倉進行了檢查,其他則不是。

6

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

+0

這應該是一個註釋 –