2015-11-30 169 views
1

我有一個複選框列表,看起來像這樣:傳遞複選框值,如果複選框被選中

<div class="checkbox"> 
<label><input type="checkbox" value="west" name="west" id="west" checked="{{isChecked}}">West</label> 
</div> 
<div class="checkbox"> 
<label><input type="checkbox" checked="{{isChecked}}" name="airport" id="airport" value="airport">Airport</label> 
</div> 
<div class="checkbox"> 
<label><input type="checkbox" checked="{{isChecked}}" name="north" id="north" value="north">North</label> 
</div> 

我已成功地通過一個布爾值,這樣的集合中的每個複選框的狀態:

var eventLocation = [ 
event.target.west.checked, 
event.target.airport.checked, 
] 

但是,我想只傳遞選中複選框的值。我知道我可以將複選框的值與event.target.west.value一起傳遞,但爲了僅獲取已選中的複選框,我必須編寫很多條件,這些條件不會很好地擴展。有沒有更好的方法來做到這一點?

謝謝!

回答

2

您可以快速收集所有選中的複選框有:

var checked = $("input:checked"); 

這將返回一個數組,你可以遍歷獲得ID,值或名稱。

checked.forEach(function(c){ 
    console.log('input id: '+c.id+' name: '+c.name+' value: '+c.val+' is checked!'); 
}); 
+0

太棒了 - 非常感謝!我實際實現相當類似的東西:( '事件位置形式的輸入[類型=複選框]')\t \t '$每個(函數(){ \t \t \t如果(this.checked){ \t \t。 \t \t eventLocation.push($(本).VAL()); \t \t \t} \t \t});' – Sekoul

+1

你可以做到這一點是不帶'如果(this.checked)'! '$('。event-location-form input [type = checkbox]:checked')。each(function(){eventLocation.push($(this).val());});' –