0

I have to check and uncheck the checkboxes. But it is not working well.

Example: When the status is active on the 1st load:

  • Unchecking the checkboxes into inactive (Works fine)
  • Checking it back again to make it active (Not working, stays uncheck)

Example: WHen the status is inactive on the 1st load:

  • Checking the checkboxes into active (Works fine)
  • Unchecking the checkboxes into inactive (Works fine)
  • Checking it back again to make it active (Not working, stays uncheck)

Here is my sample code:

var statusCheck = $('.status-box');

$.ajax({
    url: 'sample/url',
    type: 'POST',
    data: {
        user_id: ids,
        status: statusVal
    },
    success: function (response) {
        if (response == 'ok') {
            $.each(statusCheck, function () {
                var _this = $(this);

                if (_this.is(':checked')) {
                    _this.removeAttr('checked');
                } else {
                    _this.attr('checked', '');
                }
            });
        }
    }
});
6
  • Do you get any error in error console? Try hitting F12 to bring the console up Commented Jul 14, 2013 at 9:42
  • 2
    have you tried .prop('checked',false/true) instead of _this.attr('checked', '');? Commented Jul 14, 2013 at 9:43
  • Also check this related answer stackoverflow.com/questions/426258/… Commented Jul 14, 2013 at 9:43
  • @Amitd - I have, but there is no error. actually, it will place the checked="checked" on the HTML element, but the checkbox still remain unchecked. Commented Jul 14, 2013 at 9:45
  • @AntonBelev - yes, but still not working. Commented Jul 14, 2013 at 9:45

2 Answers 2

2

I had problems (strange anomalies) with checking and unchecking checkboxes with JQuery. I was using .attr and .removeAttr and when I changed it to .prop('checked',false/true) I resolved the problem.

Before jQuery 1.6, the .attr() method sometimes took property values into account when retrieving some attributes, which could cause inconsistent behavior. As of jQuery 1.6, the .prop() method provides a way to explicitly retrieve property values, while .attr() retrieves attributes. Reference:

Note you should be using JQuery 1.6 +.

Sign up to request clarification or add additional context in comments.

1 Comment

I have tried this .prop() yesterday, and it is not working. But I have tried it now, and it works well. Maybe it has something to do with my codes.. but right now it is solved.. using .prop(), thank you..
2
var statusCheck = $('.status-box')

$.ajax({
        url     : 'sample/url',
        type    : 'POST',
        data    : { user_id: ids, status: statusVal },
        success : function( response ) {
            if( response == 'ok' ) {
                $.each(statusCheck, function(){
                    var _this    = $(this);

                    if( _this.is(':checked') ) {
                        _this.removeAttr('checked');
                    } else {
                        _this.attr('checked', 'checked');
                             // ...............^ here ^
                    }
                });
            }
        }
    });

Try this: _this.attr('checked', 'checked');

Also .prop() from this Link might do the magic ;)

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.