4554

I'd like to do something like this to tick a checkbox using jQuery:

$(".myCheckBox").checked(true);

or

$(".myCheckBox").selected(true);

Does such a thing exist?

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
tpower
  • 56,100
  • 19
  • 68
  • 100

44 Answers44

6406

Modern jQuery

Use .prop():

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

DOM API

If you're working with just one element, you can always just access the underlying HTMLInputElement and modify its .checked property:

$('.myCheckbox')[0].checked = true;
$('.myCheckbox')[0].checked = false;

The benefit to using the .prop() and .attr() methods instead of this is that they will operate on all matched elements.

jQuery 1.5.x and below

The .prop() method is not available, so you need to use .attr().

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

Note that this is the approach used by jQuery's unit tests prior to version 1.6 and is preferable to using $('.myCheckbox').removeAttr('checked'); since the latter will, if the box was initially checked, change the behaviour of a call to .reset() on any form that contains it – a subtle but probably unwelcome behaviour change.

For more context, some incomplete discussion of the changes to the handling of the checked attribute/property in the transition from 1.5.x to 1.6 can be found in the version 1.6 release notes and the Attributes vs. Properties section of the .prop() documentation.

MultiplyByZer0
  • 6,302
  • 3
  • 32
  • 48
Xian
  • 76,121
  • 12
  • 43
  • 49
  • 1
    Yes this is setting the attribute value, and uncheck by removing the attribute. I have updated my answer to show this. – Xian Jan 08 '09 at 22:48
  • 29
    @Xian removing the the checked attribute makes it impossible to reset the form – mcgrailm Mar 23 '11 at 15:27
  • 1
    Problem here is if you need something that works for both versions. In that case, you can use the plugin. :) Thanks for the update! – cwharris May 06 '11 at 21:12
  • 6
    As a side note, jQuery 1.6.1 should be fixing the issue I mentioned, so we can tehcnically all still go back to using $(...).prop(...) – cwharris May 13 '11 at 20:08
  • 19
    "If you're working with just one element, it will always be fastest to use `DOMElement.checked = true`". But it would be negligible, because it's only one element... – Tyler Crompton Mar 30 '12 at 09:32
  • 50
    As Tyler says, it is a negligible improvement in performance. To me, coding using a common API makes it more readable than mixing native API and jQuery APIs. I'd stick with jQuery. – Katie Kilian May 04 '12 at 16:28
  • 19
    @TylerCrompton - Of course, its not entirely about performance, but doing `$(element).prop('checked')` is a complete waste of typing. `element.checked` exists and should be used in the cases where you already have `element` – gnarf Oct 01 '12 at 23:35
  • How can I see prop() in the source code. I tried to search and found these instances but nothing that seems right: https://pix.realquadrant.com/jquery-prop – satchel Jul 11 '21 at 06:51
777

Use:

$(".myCheckbox").attr('checked', true); // Deprecated
$(".myCheckbox").prop('checked', true);

And if you want to check if a checkbox is checked or not:

$('.myCheckbox').is(':checked');
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
bchhun
  • 18,116
  • 8
  • 28
  • 31
  • 4
    also $(selector).checked to check is checked – eomeroff May 02 '11 at 23:56
  • 6
    I tried this exact code and it didn't work for me in the case of a select all / select none checkbox that needs to check and uncheck all as well as check their state. Instead, I tried @Christopher Harris' answer and that did the trick. – JD Smith Mar 28 '13 at 01:26
  • Why using "form #mycheckbox" instead of simply "#mycheckbox"? The id is already unique in the whole document, it is faster and simpler to pick it directly. – YuriAlbuquerque Oct 11 '13 at 15:27
  • @YuriAlbuquerque it was an example. you can use whatever selector you want. – bchhun Oct 13 '13 at 00:14
  • 6
    $(selector).checked does not work. There is no 'checked' method in jQuery. – SineSwiper Oct 07 '15 at 16:42
  • @BrendanByrd There's a checked property on the DOM object though (without the jQuery wrapping) – bchhun Oct 13 '15 at 17:55
353

This is the correct way of checking and unchecking checkboxes with jQuery, as it is cross-platform standard, and will allow form reposts.

$('.myCheckBox').each(function(){ this.checked = true; });

$('.myCheckBox').each(function(){ this.checked = false; });

By doing this, you are using JavaScript standards for checking and unchecking checkboxes, so any browser that properly implements the "checked" property of the checkbox element will run this code flawlessly. This should be all major browsers, but I am unable to test previous to Internet Explorer 9.

The Problem (jQuery 1.6):

Once a user clicks on a checkbox, that checkbox stops responding to the "checked" attribute changes.

Here is an example of the checkbox attribute failing to do the job after someone has clicked the checkbox (this happens in Chrome).

Fiddle

The Solution:

By using JavaScript's "checked" property on the DOM elements, we are able to solve the problem directly, instead of trying to manipulate the DOM into doing what we want it to do.

Fiddle

This plugin will alter the checked property of any elements selected by jQuery, and successfully check and uncheck checkboxes under all circumstances. So, while this may seem like an over-bearing solution, it will make your site's user experience better, and help prevent user frustration.

(function( $ ) {
    $.fn.checked = function(value) {
        if(value === true || value === false) {
            // Set the value of the checkbox
            $(this).each(function(){ this.checked = value; });
        } 
        else if(value === undefined || value === 'toggle') {
            // Toggle the checkbox
            $(this).each(function(){ this.checked = !this.checked; });
        }

        return this;
    };
})( jQuery );

Alternatively, if you do not want to use a plugin, you can use the following code snippets:

// Check
$(':checkbox').prop('checked', true);

// Un-check
$(':checkbox').prop('checked', false);

// Toggle
$(':checkbox').prop('checked', function (i, value) {
    return !value;
});
Yashwardhan Pauranik
  • 5,370
  • 5
  • 42
  • 65
cwharris
  • 17,835
  • 4
  • 44
  • 64
  • 5
    In your first JSFiddle example you should be using `removeAttr('checked')` rather than `attr('checked', false)` – Daniel X Moore Jan 30 '12 at 07:00
  • 4
    @DanielXMoore, You're skirting around the issue. The example was to show that once the check-box was clicked by the user, the browser no longer responds to `checked` attribute changes, *regardless* of the method used to change them. – cwharris Jan 30 '12 at 13:28
  • 4
    @ChristopherHarris Ok, you're right, I missed that. As of jQuery 1.6 shouldn't you use the .prop method though?`$('.myCheckBox').prop('checked', true)` That way it will automatically apply to the entire set of matched elements (only when setting though, getting is still only the first) – Daniel X Moore Feb 02 '12 at 01:45
  • Yes. `prop` is definitely the appropriate way to set attributes on an element. – cwharris Feb 02 '12 at 02:40
  • @ChristopherHarris, I have added what I needed to the plugin to allow some parameter flexibility. This made inline processing easier without the type conversion. Esp from disparate databases with 'ideas' about what "true" is. Fiddle: http://jsfiddle.net/Cyberjetx/vcp96/ – Joe Johnston Mar 04 '14 at 03:59
  • @JoeJohnston In a perfect world, that shouldn't be built into the plugin. Instead, it should be converted to a true/false value before being using with the plugin. What's to say a database doesn't consider '0' true? It all depends on the database. – cwharris Mar 07 '14 at 21:42
166

You can do

$('.myCheckbox').attr('checked',true) //Standards compliant

or

$("form #mycheckbox").attr('checked', true)

If you have custom code in the onclick event for the checkbox that you want to fire, use this one instead:

$("#mycheckbox").click();

You can uncheck by removing the attribute entirely:

$('.myCheckbox').removeAttr('checked')

You can check all checkboxes like this:

$(".myCheckbox").each(function(){
    $("#mycheckbox").click()
});
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Micah
  • 111,873
  • 86
  • 233
  • 325
87

You can also extend the $.fn object with new methods:

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

Then you can just do:

$(":checkbox").check();
$(":checkbox").uncheck();

Or you may want to give them more unique names like mycheck() and myuncheck() in case you use some other library that uses those names.

livefree75
  • 903
  • 6
  • 2
70
$("#mycheckbox")[0].checked = true;
$("#mycheckbox").attr('checked', true);
$("#mycheckbox").click();

The last one will fire the click event for the checkbox, the others will not. So if you have custom code in the onclick event for the checkbox that you want to fire, use the last one.

Chris Brandsma
  • 11,666
  • 5
  • 47
  • 58
65

To check a checkbox you should use

 $('.myCheckbox').attr('checked',true);

or

 $('.myCheckbox').attr('checked','checked');

and to uncheck a check box you should always set it to false:

 $('.myCheckbox').attr('checked',false);

If you do

  $('.myCheckbox').removeAttr('checked')

it removes the attribute all together and therefore you will not be able to reset the form.

BAD DEMO jQuery 1.6. I think this is broken. For 1.6 I am going to make a new post on that.

NEW WORKING DEMO jQuery 1.5.2 works in Chrome.

Both demos use

$('#tc').click(function() {
    if ( $('#myCheckbox').attr('checked')) {
        $('#myCheckbox').attr('checked', false);
    } else {
        $('#myCheckbox').attr('checked', 'checked');
    }
});
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
mcgrailm
  • 17,469
  • 22
  • 83
  • 129
  • 1
    This is inaccurate. setting the 'checked' attribute to '' will *not* uncheck check boxes in at least chrome. – cwharris May 06 '11 at 05:58
  • @xixonia I did test before I posted your fiddle doesn't work because you didn't change the menu on the left to include jquery – mcgrailm May 06 '11 at 18:44
  • @xixonia thanks again, It seems this doesn't work the same way in jauery 1.6 see note above thanks for adding your solution as well – mcgrailm May 06 '11 at 20:10
  • 1
    mcgralim - in 1.6 its even easier.... `$(".mycheckbox").prop("checked", true/false)` – gnarf May 06 '11 at 20:11
  • @gnarf thats great but now i'll have to go change that in all my code 8 ^ ( – mcgrailm May 06 '11 at 20:14
  • @mcgrailm - its still not released, but we may be adding some backwards compat for `.attr()` with boolean attributes -- although I wish we wouldn't -- Read: http://forum.jquery.com/topic/prop-attr-rewrite-again – gnarf May 06 '11 at 20:18
  • @Blazemonger do you mean you use .prop rather than .attr ? – mcgrailm Jan 21 '14 at 14:20
  • Your answer promised a new up-to-date solution, which you never provided. `.attr` has been the *wrong* approach to this problem for more than two years now. – Blazemonger Jan 21 '14 at 14:25
  • I did post a corrected answer at the time but that was 4 years ago dude. I don't go around updating all my posts and I'm sure most people don't. You down vote was for a post 4 years old saying it's out of date, well duh – mcgrailm Jan 21 '14 at 14:29
  • @DaveRager in this case, though, the obsolete answers are not only obsolete, but also completely redundant since the accepted answer covers their content fine already. There's no point in updating an obsolete answer if afterwards it will still not be useful. – Mark Amery Dec 14 '14 at 23:43
  • 2
    @MarkAmery you mentioned that my post added nothing at the time of post but that is in accurate. If you look at the history of the accepted answer you'll find they suggest removing the element. Which makes it impossible to reset the form, which was why I posted to begin with. – mcgrailm Dec 15 '14 at 14:50
  • 1
    @mcgrailm I've gone ahead and modified the accepted answer in light of your remarks. If you'd like to cast an eye over it and check that it looks good in its current state, I'd appreciate that. My apologies again for offering up sharp criticism that was, at least in part, highly misguided. – Mark Amery Dec 15 '14 at 16:54
56

This selects elements that have the specified attribute with a value containing the given substring "ckbItem":

$('input[name *= ckbItem]').prop('checked', true);

It will select all elements that contain ckbItem in its name attribute.

Abou-Emish
  • 2,201
  • 1
  • 22
  • 22
51

Assuming that the question is...

How do I check a checkbox-set BY VALUE?

Remember that in a typical checkbox set, all input tags have the same name, they differ by the attribute value: there are no ID for each input of the set.

Xian's answer can be extended with a more specific selector, using the following line of code:

$("input.myclass[name='myname'][value='the_value']").prop("checked", true);
Peter Krauss
  • 13,174
  • 24
  • 167
  • 304
48

I'm missing the solution. I'll always use:

if ($('#myCheckBox:checked').val() !== undefined)
{
    //Checked
}
else
{
    //Not checked
}
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Overbeeke
  • 2,006
  • 3
  • 22
  • 23
  • 3
    This doesn't answer the question (the question is about *setting* whether a checkbox is checked, not determining whether a checkbox is checked). It's also a pretty ugly way of determining if the checkbox is checked (for one thing, you're exploiting the non-self-evident fact that `.val()` will always return `undefined` when called on 0 elements to detect that a jQuery object is empty, when you could simply check its `.length` instead) - see http://stackoverflow.com/questions/901712/check-checkbox-checked-property-using-jquery for more readable approaches. – Mark Amery Dec 14 '14 at 23:47
45

To check a checkbox using jQuery 1.6 or higher just do this:

checkbox.prop('checked', true);

To uncheck, use:

checkbox.prop('checked', false);

Here' s what I like to use to toggle a checkbox using jQuery:

checkbox.prop('checked', !checkbox.prop('checked'));

If you're using jQuery 1.5 or lower:

checkbox.attr('checked', true);

To uncheck, use:

checkbox.attr('checked', false);
Ramon de Jesus
  • 779
  • 6
  • 10
40

Here is a way to do it without jQuery

function addOrAttachListener(el, type, listener, useCapture) {
  if (el.addEventListener) {
    el.addEventListener(type, listener, useCapture);
  } else if (el.attachEvent) {
    el.attachEvent("on" + type, listener);
  }
};

addOrAttachListener(window, "load", function() {
  var cbElem = document.getElementById("cb");
  var rcbElem = document.getElementById("rcb");
  addOrAttachListener(cbElem, "click", function() {
    rcbElem.checked = cbElem.checked;
  }, false);
}, false);
<label>Click Me!
  <input id="cb" type="checkbox" />
</label>
<label>Reflection:
  <input id="rcb" type="checkbox" />
</label>
Xitalogy
  • 1,592
  • 1
  • 14
  • 17
34

Here is code for checked and unchecked with a button:

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).attr('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).attr('checked', false); unset=1; }
        });
        set=unset;
    });
});

Update: Here is the same code block using the newer Jquery 1.6+ prop method, which replaces attr:

var set=1;
var unset=0;
jQuery( function() {
    $( '.checkAll' ).live('click', function() {
        $( '.cb-element' ).each(function () {
            if(set==1){ $( '.cb-element' ).prop('checked', true) unset=0; }
            if(set==0){ $( '.cb-element' ).prop('checked', false); unset=1; }
        });
        set=unset;
    });
});
MrBoJangles
  • 12,127
  • 17
  • 61
  • 79
starjahid
  • 357
  • 3
  • 2
33

Try this:

$('#checkboxid').get(0).checked = true;  //For checking

$('#checkboxid').get(0).checked = false; //For unchecking
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
prashanth
  • 339
  • 3
  • 2
31

We can use elementObject with jQuery for getting the attribute checked:

$(objectElement).attr('checked');

We can use this for all jQuery versions without any error.

Update: Jquery 1.6+ has the new prop method which replaces attr, e.g.:

$(objectElement).prop('checked');
MrBoJangles
  • 12,127
  • 17
  • 61
  • 79
Prasanth P
  • 715
  • 2
  • 9
  • 24
28

If you are using PhoneGap doing application development, and you have a value on the button that you want to show instantly, remember to do this

$('span.ui-[controlname]',$('[id]')).text("the value");

I found that without the span, the interface will not update no matter what you do.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Clement Ho
  • 329
  • 3
  • 10
27

Here is the code and demo for how to check multiple check boxes...

http://jsfiddle.net/tamilmani/z8TTt/

$("#check").on("click", function () {

    var chk = document.getElementById('check').checked;
    var arr = document.getElementsByTagName("input");

    if (chk) {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = true;
        }
    } else {
        for (var i in arr) {
            if (arr[i].name == 'check') arr[i].checked = false;
        }
    }
});
Joaquinglezsantos
  • 1,510
  • 16
  • 26
tamilmani
  • 591
  • 6
  • 13
  • -​1; mixing jQuery selectors like `$("#check")` with raw DOM API calls like `document.getElementsByTagName("input")` seems inelegant to me, especially given that the `for` loops here could be avoided by using `.prop()`. Regardless this is yet another late answer that adds nothing new. – Mark Amery Dec 15 '14 at 18:33
23

Another possible solution:

    var c = $("#checkboxid");
    if (c.is(":checked")) {
         $('#checkboxid').prop('checked', false);
    } else {
         $('#checkboxid').prop('checked', true);
    }
Getz
  • 3,983
  • 6
  • 35
  • 52
Muhammad Aamir Ali
  • 20,419
  • 10
  • 66
  • 57
23

As @livefree75 said:

jQuery 1.5.x and below

You can also extend the $.fn object with new methods:

(function($)  {
   $.fn.extend({
      check : function()  {
         return this.filter(":radio, :checkbox").attr("checked", true);
      },
      uncheck : function()  {
         return this.filter(":radio, :checkbox").removeAttr("checked");
      }
   });
}(jQuery));

But in new versions of jQuery, we have to use something like this:

jQuery 1.6+

    (function($)  {
       $.fn.extend({
          check : function()  {
             return this.filter(":radio, :checkbox").prop("checked", true);
          },
          uncheck : function()  {
             return this.filter(":radio, :checkbox").prop("checked",false);
          }
       });
    }(jQuery));

Then you can just do:

    $(":checkbox").check();
    $(":checkbox").uncheck();
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Ardalan Shahgholi
  • 11,967
  • 21
  • 108
  • 144
20

For jQuery 1.6+

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);

For jQuery 1.5.x and below

$('.myCheckbox').attr('checked', true);
$('.myCheckbox').attr('checked', false);

To check,

$('.myCheckbox').removeAttr('checked');
logan
  • 7,946
  • 36
  • 114
  • 185
19

If using mobile and you want the interface to update and show the checkbox as unchecked, use the following:

$("#checkbox1").prop('checked', false).checkboxradio("refresh");
Matt Peacock
  • 199
  • 1
  • 2
18

Be aware of memory leaks in Internet Explorer prior to Internet Explorer 9, as the jQuery documentation states:

In Internet Explorer prior to version 9, using .prop() to set a DOM element property to anything other than a simple primitive value (number, string, or boolean) can cause memory leaks if the property is not removed (using .removeProp()) before the DOM element is removed from the document. To safely set values on DOM objects without memory leaks, use .data().

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
naor
  • 3,460
  • 3
  • 18
  • 13
  • 2
    This is irrelevant, since all the (correct) answers use `.prop('checked',true)`. – Blazemonger Jan 21 '14 at 14:19
  • Not sure I understood your comment.This still exists in jQuery documentation. Are you implying there is no memory leak in IE < 9 ? – naor Jan 21 '14 at 20:53
  • 2
    There is no memory leak in this case, since we *are* setting it to a simple primitive value (Boolean). – Blazemonger Jan 21 '14 at 20:56
18

To check and uncheck

$('.myCheckbox').prop('checked', true);
$('.myCheckbox').prop('checked', false);
Theraot
  • 31,890
  • 5
  • 57
  • 86
jj2422
  • 372
  • 5
  • 20
  • 3
    -​1; this adds no value at all to an already bloated thread. The code here is exactly the same as the accepted answer. – Mark Amery Dec 15 '14 at 18:25
17
$('controlCheckBox').click(function(){
    var temp = $(this).prop('checked');
    $('controlledCheckBoxes').prop('checked', temp);
});
mahmoh
  • 802
  • 1
  • 9
  • 15
  • 4
    -​1 for being a code-only answer, not answering the question directly, and adding nothing that other answers hadn't already covered. – Mark Amery Dec 15 '14 at 18:28
16

This is probably the shortest and easiest solution:

$(".myCheckBox")[0].checked = true;

or

$(".myCheckBox")[0].checked = false;

Even shorter would be:

$(".myCheckBox")[0].checked = !0;
$(".myCheckBox")[0].checked = !1;

Here is a jsFiddle as well.

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Friedrich
  • 2,211
  • 20
  • 42
15

Plain JavaScript is very simple and much less overhead:

var elements = document.getElementsByClassName('myCheckBox');
for(var i = 0; i < elements.length; i++)
{
    elements[i].checked = true;
}

Example here

Alex W
  • 37,233
  • 13
  • 109
  • 109
  • @MarkAmery The accepted answer does not cover how to do it without jQuery. My answer adds supplementary benefit to the accepted answer. – Alex W Dec 15 '14 at 20:12
15

When you checked a checkbox like;

$('.className').attr('checked', 'checked')

it might not be enough. You should also call the function below;

$('.className').prop('checked', 'true')

Especially when you removed the checkbox checked attribute.

Serhat Koroglu
  • 1,263
  • 4
  • 19
  • 41
14

I couldn't get it working using:

$("#cb").prop('checked', 'true');
$("#cb").prop('checked', 'false');

Both true and false would check the checkbox. What worked for me was:

$("#cb").prop('checked', 'true'); // For checking
$("#cb").prop('checked', '');     // For unchecking
Mark Amery
  • 143,130
  • 81
  • 406
  • 459
fredcrs
  • 3,558
  • 7
  • 33
  • 55
  • 16
    shouldn't it be `true` and `false` and not `'true'` and `'false'`? – tpower Jan 05 '12 at 15:34
  • 9
    It "didn't work" because `'false'` was converted to boolean value which resulted in `true` - empty string evaluates to `false` thus it "worked". See [this fiddle](http://jsfiddle.net/rDt2P/) for example of what I mean. – Shadow The GPT Wizard Jun 24 '12 at 11:41
  • @chris97ong I've rolled back your edit; when someone says "Don't use the code below because it doesn't work", *fixing* that code while leaving the comment saying that it doesn't work is harmful - especially when it breaks the explanation in the comments of *why* the code isn't working. That said, this answer is still somewhat confused and deserves a downvote for the reasons given by tpower and ShadowWizard. – Mark Amery Dec 15 '14 at 18:46
  • 1
    use true and false values for boolean, do not use 'true' or 'false' (strings). – Jone Polvora Feb 21 '15 at 22:34
12

Here's the complete answer using jQuery

I test it and it works 100% :D

    // when the button (select_unit_button) is clicked it returns all the checed checkboxes values 
    $("#select_unit_button").on("click", function(e){

             var arr = [];

             $(':checkbox:checked').each(function(i){
                 arr[i] = $(this).val(); // u can get id or anything else
             });

              //console.log(arr); // u can test it using this in google chrome
    });
11

In jQuery,

if($("#checkboxId").is(':checked')){
    alert("Checked");
}

or

if($("#checkboxId").attr('checked')==true){
    alert("Checked");
}

In JavaScript,

if (document.getElementById("checkboxID").checked){
    alert("Checked");
}
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
ijarlax
  • 515
  • 2
  • 12
  • 18
11

In case you use ASP.NET MVC, generate many checkboxes and later have to select/unselect all using JavaScript you can do the following.

HTML

@foreach (var item in Model)
{
    @Html.CheckBox(string.Format("ProductId_{0}", @item.Id), @item.IsSelected)
}

JavaScript

function SelectAll() {       
        $('input[id^="ProductId_"]').each(function () {          
            $(this).prop('checked', true);
        });
    }

    function UnselectAll() {
        $('input[id^="ProductId_"]').each(function () {
            $(this).prop('checked', false);
        });
    }
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
NoWar
  • 36,338
  • 80
  • 323
  • 498
11

This may help someone.

HTML5

 <input id="check_box" type="checkbox" onclick="handleOnClick()">

JavaScript.

  function handleOnClick(){

      if($("#check_box").prop('checked'))
      {        
          console.log("current state: checked");
      }
      else
      {         
          console.log("current state: unchecked");
      }    
 }
SedJ601
  • 12,173
  • 3
  • 41
  • 59
11

if($('jquery_selector').is(":checked")){
  //somecode
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
David Arul
  • 171
  • 2
  • 4
  • 2
    When giving an answer it is preferable to give [some explanation as to WHY your answer](http://stackoverflow.com/help/how-to-answer) is the one. – Stephen Rauch Nov 01 '17 at 13:48
10

If you are using .prop('checked', true|false) and don’t have changed checkbox, you need to add trigger('click') like this:

// Check
$('#checkboxF1').prop( "checked", true).trigger('click');


// Uncheck
$('#checkboxF1').prop( "checked", false).trigger('click');
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Alex Montoya
  • 4,697
  • 1
  • 30
  • 31
9
$(".myCheckBox").prop("checked","checked");
mathew
  • 193
  • 1
  • 5
7

You can check a checkbox checked condition using JavaScript in different ways. You can see below.

  1. First method - $('.myCheckbox').prop('checked', true);

  2. Second method - $('.myCheckbox').attr('checked', true);

  3. Third method (for check condition if checkbox is checked or not) - $('.myCheckbox').is(':checked')

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Gaurang Sondagar
  • 814
  • 1
  • 9
  • 23
6

You can try this:

$('input[name="activity[task_state]"]').val("specify the value you want to check ")
anusha
  • 2,087
  • 19
  • 31
6

If you happen to be using Bootstrap (perhaps unawarely) ...

$('#myCheckbox').bootstrapToggle('on')
$('#myCheckbox').bootstrapToggle('off')

http://www.bootstraptoggle.com/

Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Kenmeister
  • 504
  • 2
  • 9
  • 9
6

Edited on 2019 January

You can use: .prop( propertyName ) - version added: 1.6

p {margin: 20px 0 0;}
b {color: red;}
label {color: red;}
<!doctype html>
<html lang="en">
<head>
  <meta charset="utf-8">
  <script src="https://code.jquery.com/jquery-1.10.2.js"></script>
</head>
<body>
 
<input id="check1" type="checkbox" checked="checked">
<label for="check1">Check here</label>
<p></p>
 
<script>
$( "input" ).change(function() {
  var $input = $( this );
  $( "p" ).html(
    "The .attr( \"checked\" ): <b>" + $input.attr( "checked" ) + "</b><br>" +
    "The .prop( \"checked\" ): <b>" + $input.prop( "checked" ) + "</b><br>" +
    "The .is( \":checked\" ): <b>" + $input.is( ":checked" ) + "</b>" );
}).change();
</script>
 
</body>
</html>

On Angular Framework

Example 1

In your .html file

<input type="checkbox" (change)="toggleEditable($event)">

In your .ts file

toggleEditable(event) {
     if ( event.target.checked ) {
         this.contentEditable = true;
    }
}

Example 2

In your .html file

<input type="checkbox" [(ngModel)]="isChecked" (change)="checkAction(isChecked ? 'Action1':'Action2')" />
L Y E S - C H I O U K H
  • 4,765
  • 8
  • 40
  • 57
1

A JavaScript solution can be also simple and with less overhead:

document.querySelectorAll('.myCheckBox').forEach(x=> x.checked=1)

document.querySelectorAll('.myCheckBox').forEach(x=> x.checked=1)
checked A: <input type="checkbox" class="myCheckBox"><br/>
unchecked: <input type="checkbox"><br/>
checked B: <input type="checkbox" class="myCheckBox"><br/>
Peter Mortensen
  • 30,738
  • 21
  • 105
  • 131
Kamil Kiełczewski
  • 85,173
  • 29
  • 368
  • 345
  • 1
    This belongs on [Check/Uncheck checkbox with JavaScript (jQuery or Vanilla)?](https://stackoverflow.com/q/8206565/215552) or [JavaScript check multiple checkbox](https://stackoverflow.com/q/31032777/215552), not this jQuery question. – Heretic Monkey Dec 27 '19 at 22:03
1

You can do this if you have the id to check it

document.getElementById('ElementId').checked = false

And this to uncheck

document.getElementById('ElementId').checked = true

Omar Odeh
  • 33
  • 1
  • 8
1

If you consider using vanilla js instead of jquery there is a solution:

//for one element: 
document.querySelector('.myCheckBox').checked = true /* or false */ //will select the first matched element
//for multiple elements:
for (const checkbox of document.querySelectorAll('.myCheckBox')) {
checkbox.checked = true //or false
}
vnapastiuk
  • 609
  • 7
  • 12
1

I was wondering why none of the old answers mentioned that to fully simulate the ticking, you also need to simulate the change event if you want to fire something else after simulating ticking:

$('.myCheckbox').prop('checked', true).trigger("change");
$('.myCheckbox').prop('checked', false).trigger("change");
Ali Sheikhpour
  • 10,475
  • 5
  • 41
  • 82
-6

For overall:

$("#checkAll").click(function(){
    $(".somecheckBoxes").prop('checked',$(this).prop('checked')?true:false);
});
eggshot
  • 190
  • 6