3

I have created bellow script to select/deselect multiple check-box and store selected check-box value in hidden filed. Now I need your small help to complete this things. When user deselect any check-box I want that deselected check-box value to perform some task.

My JS Code:

jQuery.noConflict();
function toggle_chkbox(source,group,lbl) {
    checkboxes = document.getElementsByName(group);

    for(var i=0;i<checkboxes.length;i++)
    {
        var chkid = '#'+lbl+i;

        checkboxes[i].checked = source.checked;

        if(jQuery(chkid).hasClass('c_on') && checkboxes[i].checked == false  )
        {
            jQuery(chkid).removeClass('c_on').addClass('c_off');
        }
        else if(jQuery(chkid).hasClass('c_off') && checkboxes[i].checked == true  )
        {
            jQuery(chkid).removeClass('c_off').addClass('c_on');
        }
    }
    updateTextArea();       
}

function updateTextArea() {   
    var allVals = [];
    jQuery('.taglist :checked').each(function(i) {
        allVals.push((i!=0?"":"")+ jQuery(this).val());
     });
        jQuery('#textValue').val(allVals).attr('rows', allVals.length);
     }
     jQuery(function() {
        jQuery('.taglist input').click(updateTextArea);
});

My Live Code:

<!DOCTYPE html>
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>Checkbox</title>
<style type="text/css">
.has-js .label_check, .has-js .label_radio {
    padding-left: 34px;
}
.has-js .label_check {
    background: url(http://webdesign.maratz.com/lab/fancy-checkboxes-and-radio-buttons/check-off.png) no-repeat;
}
.has-js label.c_on {
    background: url(http://webdesign.maratz.com/lab/fancy-checkboxes-and-radio-buttons/check-on.png) no-repeat;
}
.has-js .label_check input, .has-js .label_radio input {
    position: absolute;
    left: -9999px;
}
</style>

<script type='text/javascript' src='http://code.jquery.com/jquery-1.9.1.js'></script>
</head>
<body>
<script type="text/javascript">
jQuery.noConflict();
function toggle_chkbox(source,group,lbl) {
    checkboxes = document.getElementsByName(group);

    for(var i=0;i<checkboxes.length;i++)
    {
        var chkid = '#'+lbl+i;

        checkboxes[i].checked = source.checked;

        if(jQuery(chkid).hasClass('c_on') && checkboxes[i].checked == false  )
        {
            jQuery(chkid).removeClass('c_on').addClass('c_off');
        }
        else if(jQuery(chkid).hasClass('c_off') && checkboxes[i].checked == true  )
        {
            jQuery(chkid).removeClass('c_off').addClass('c_on');
        }
    }
    updateTextArea();       
}

function updateTextArea() {   
    var allVals = [];
    jQuery('.taglist :checked').each(function(i) {
        allVals.push((i!=0?"":"")+ jQuery(this).val());
     });
        jQuery('#textValue').val(allVals).attr('rows', allVals.length);
     }
     jQuery(function() {
        jQuery('.taglist input').click(updateTextArea);
});
</script>

<div class="taglist">
    <label class="label_check" for="checkbox-01" id="lbl-box-posts1"><input name="ck-box-posts[]" id="checkbox-01" class="chkBX" value="1" type="checkbox" /> 2D Animation </label>
  <br />
    <label class="label_check" for="checkbox-02" id="lbl-box-posts2"><input name="ck-box-posts[]" id="checkbox-02" class="chkBX" value="2" type="checkbox" /> 3D Animation </label>
  <br />
    <label class="label_check" for="checkbox-03" id="lbl-box-posts3"><input name="ck-box-posts[]" id="checkbox-03" class="chkBX" value="3" type="checkbox" />  Animatronics </label>
  <br />    
    <label class="label_check" for="checkbox-04" id="lbl-box-posts4"><input name="ck-box-posts[]" id="checkbox-04" class="chkBX" value="4" type="checkbox" /> Architectural </label>
  <br />
    <label class="label_check" for="checkbox-05" id="lbl-box-posts5"><input name="ck-box-posts[]" id="checkbox-05" class="chkBX" value="5" type="checkbox" /> Cartoon </label>
  <br />
    <label class="label_check" for="checkbox-06" id="lbl-box-posts6"><input name="ck-box-posts[]" id="checkbox-06" class="chkBX" value="all" type="checkbox" onchange="toggle_chkbox(this,'ck-box-posts[]','lbl-box-posts');" /> Check All </label>
  <br />
  <input type="hidden" name="textValue" id="textValue" >
</div>

<script type="text/javascript">
    var d = document;
    var safari = (navigator.userAgent.toLowerCase().indexOf('safari') == 1) ? true : false;
    var gebtn = function(parEl,child) { return parEl.getElementsByTagName(child); };
    jQuery.noConflict();
    jQuery(document).ready(function() {

        var body = gebtn(d,'body')[0];
        body.className = body.className && body.className != '' ? body.className + ' has-js' : 'has-js';

        if (!d.getElementById || !d.createTextNode) return;
        var ls = gebtn(d,'label');
        for (var i = 0; i < ls.length; i++) {
            var l = ls[i];
            if (l.className.indexOf('label_') == -1) continue;
            var inp = gebtn(l,'input')[0];
            if (l.className == 'label_check') {
                l.className = (safari && inp.checked == true || inp.checked) ? 'label_check c_on' : 'label_check c_off';
                l.onclick = check_it;
            };
            if (l.className == 'label_radio') {
                l.className = (safari && inp.checked == true || inp.checked) ? 'label_radio r_on' : 'label_radio r_off';
                l.onclick = turn_radio;
            };
        };
    });
    var check_it = function() {
        var inp = gebtn(this,'input')[0];
        if (this.className == 'label_check c_off' || (!safari && inp.checked)) {
            this.className = 'label_check c_on';
            if (safari) inp.click();
        } else {
            this.className = 'label_check c_off';
            if (safari) inp.click();
        };
    };
    var turn_radio = function() {
        var inp = gebtn(this,'input')[0];
        if (this.className == 'label_radio r_off' || inp.checked) {
            var ls = gebtn(this.parentNode,'label');
            for (var i = 0; i < ls.length; i++) {
                var l = ls[i];
                if (l.className.indexOf('label_radio') == -1)  continue;
                l.className = 'label_radio r_off';
            };
            this.className = 'label_radio r_on';
            if (safari) inp.click();
        } else {
            this.className = 'label_radio r_off';
            if (safari) inp.click();
        };
    };
</script>
</body>
</html>

Sorry for not creating jsFiddle or jsbin as I am getting error on that. :(

Any ideas or suggestions? Thanks.

2 Answers 2

3
$(".taglist :not(:checked)").each(function() {
  alert($(this).val());
}

Like this you can get all the unchecked values and u can store it in an array or perform any operations on it as u want...Hope it helps you..

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

Comments

1

you can bind a onChange function to the checkboxes and perform needed actions there:

$(<selector>).on("change",function(){
    //doThings 
});

like in your sample code:

for(var i=0;i<checkboxes.length;i++){
    var chkid = '#'+lbl+i;
    $(chkid).on("change",function(){
        //do things
    });
}

2 Comments

Thanks but how to get unchecked check box value? Can you guide me?
i don't really know what you mean by that....just checking if(!checkboxes[i].checked) does not work for you?

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.