87

Possible Duplicate:
Select values of checkbox group with jQuery

In HTML I have a set of checkboxes grouped together by a class. I want to get an array in jQuery containing all the checkboxes that are selected/checked for that class (so other checkboxes on the page are ignored).

So HTML code like this:

<input type="checkbox" class="group1" value="18" checked="checked" />
<input type="checkbox" class="group1" value="20" />
<input type="checkbox" class="group1" value="15" />
<input type="checkbox" class="group2" value="14" />
<input type="checkbox" class="group1" value="55" checked="checked" />
<input type="checkbox" class="group1" value="10" checked="checked" />
<input type="checkbox" class="group2" value="77" checked="checked" />
<input type="checkbox" class="group1" value="11" />

Would return the values of the checked/selected group1 checkboxes into an array like this:

var values = [ 18, 55, 10 ];
0

3 Answers 3

205

You can use the :checkbox and :checked pseudo-selectors and the .class selector, with that you will make sure that you are getting the right elements, only checked checkboxes with the class you specify.

Then you can easily use the Traversing/map method to get an array of values:

var values = $('input:checkbox:checked.group1').map(function () {
  return this.value;
}).get(); // ["18", "55", "10"]
Sign up to request clarification or add additional context in comments.

5 Comments

How would you do this using the elements name instead of a class?
Used this for reference, thanks. And to answer the last comment, use selector: $('input:checkbox[name=SOMENAME]')
@user387049 you may use it so (assume sector4 being the name of checkbox array): $("input[name='sector4[]']:checkbox:checked").each(function() { });
I didn't need to use .get() at all and worked fine. To be honest, use it throwed an error. It should be a jquery version related issue.
How can I make it so that it gives me that in the change function? Thanks
32
var matches = [];
$(".className:checked").each(function() {
    matches.push(this.value);
});

2 Comments

...will give you a jQuery object, and not an array.
thanks Stefan, didn't realize an array of values was needed :)
5

You can also add underscore.js to your project and will be able to do it in one line:

_.map($("input[name='category_ids[]']:checked"), function(el){return $(el).val()})

1 Comment

“one line”; that’s one very long line…

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.