Making sure at least one checkbox is checked

后端 未结 9 770
天命终不由人
天命终不由人 2020-11-27 16:39

I have a form with multiple checkboxes and I want to use JavaScript to make sure at least one is checked. This is what I have right now but no matter what is chosen an alert

相关标签:
9条回答
  • 2020-11-27 17:01

    Vanilla JS:

    var checkboxes = document.getElementsByClassName('activityCheckbox'); // puts all your checkboxes in a variable
    
    function activitiesReset() {
        var checkboxesChecked = function () { // if a checkbox is checked, function ends and returns true. If all checkboxes have been iterated through (which means they are all unchecked), returns false.
            for (var i = 0; i < checkboxes.length; i++) {
                if (checkboxes[i].checked) {
                    return true;
                }
            }
            return false;
        }
        error[2].style.display = 'none'; // an array item specific to my project - it's a red label which says 'Please check a checkbox!'. Here its display is set to none, so the initial non-error label is visible instead. 
            if (submitCounter > 0 && checkboxesChecked() === false) { // if a form submit has been attempted, and if all checkboxes are unchecked
                error[2].style.display = 'block'; // red error label is now visible.
            }
    }
    
    for (var i=0; i<checkboxes.length; i++) {  // whenever a checkbox is checked or unchecked, activitiesReset runs.
        checkboxes[i].addEventListener('change', activitiesReset);
    }
    


    Explanation:
    Once a form submit has been attempted, this will update your checkbox section's label to notify the user to check a checkbox if he/she hasn't yet. If no checkboxes are checked, a hidden 'error' label is revealed prompting the user to 'Please check a checkbox!'. If the user checks at least one checkbox, the red label is instantaneously hidden again, revealing the original label. If the user again un-checks all checkboxes, the red label returns in real-time. This is made possible by JavaScript's onchange event (written as .addEventListener('change', function(){});

    0 讨论(0)
  • 2020-11-27 17:03
    < script type = "text/javascript" src = "js/jquery-1.6.4.min.js" >  <  / script >
         < script type = "text/javascript" >
    
    function checkSelectedAtleastOne(clsName) {
        if (selectedValue == "select")
            return false;
    
        var i = 0;
        $("." + clsName).each(function () {
    
            if ($(this).is(':checked')) {
                i = 1;
            }
    
        });
    
        if (i == 0) {
            alert("Please select atleast one users");
            return false;
        } else if (i == 1) {
            return true;
        }
    
        return true;
    
    }
    
    $(document).ready(function () {
        $('#chkSearchAll').click(function () {
    
            var checked = $(this).is(':checked');
            $('.clsChkSearch').each(function () {
                var checkBox = $(this);
                if (checked) {
                    checkBox.prop('checked', true);
                } else {
                    checkBox.prop('checked', false);
                }
            });
    
        });
    
        //for select and deselect 'select all' check box when clicking individual check boxes
        $(".clsChkSearch").click(function () {
    
            var i = 0;
            $(".clsChkSearch").each(function () {
    
                if ($(this).is(':checked')) {}
                else {
    
                    i = 1; //unchecked
                }
    
            });
    
            if (i == 0) {
                $("#chkSearchAll").attr("checked", true)
            } else if (i == 1) {
    
                $("#chkSearchAll").attr("checked", false)
            }
    
        });
    
    });
    
    <  / script >
    
    0 讨论(0)
  • 2020-11-27 17:09
    if(($("#checkboxid1").is(":checked")) || ($("#checkboxid2").is(":checked"))
                || ($("#checkboxid3").is(":checked"))) {
     //Your Code here
    }
    

    You can use this code to verify that checkbox is checked at least one.

    Thanks!!

    0 讨论(0)
  • 2020-11-27 17:15

    You should avoid having two checkboxes with the same name if you plan to reference them like document.FC.c1. If you have multiple checkboxes named c1 how will the browser know which you are referring to?

    Here's a non-jQuery solution to check if any checkboxes on the page are checked.

    var checkboxes = document.querySelectorAll('input[type="checkbox"]');
    var checkedOne = Array.prototype.slice.call(checkboxes).some(x => x.checked);
    

    You need the Array.prototype.slice.call part to convert the NodeList returned by document.querySelectorAll into an array that you can call some on.

    0 讨论(0)
  • 2020-11-27 17:15

    You can check that atleast one checkbox is checked or not using this simple code. You can also drop your message.

    Reference Link

    <label class="control-label col-sm-4">Check Box 2</label>
        <input type="checkbox" name="checkbox2" id="checkbox2" value=ck1 /> ck1<br />
        <input type="checkbox" name="checkbox2" id="checkbox2" value=ck2 /> ck2<br />
    
    <script>
    function checkFormData() {
        if (!$('input[name=checkbox2]:checked').length > 0) {
            document.getElementById("errMessage").innerHTML = "Check Box 2 can not be null";
            return false;
        }
        alert("Success");
        return true;
    }
    </script>
    
    0 讨论(0)
  • 2020-11-27 17:16

    This should work:

    function valthisform()
    {
        var checkboxs=document.getElementsByName("c1");
        var okay=false;
        for(var i=0,l=checkboxs.length;i<l;i++)
        {
            if(checkboxs[i].checked)
            {
                okay=true;
                break;
            }
        }
        if(okay)alert("Thank you for checking a checkbox");
        else alert("Please check a checkbox");
    }
    

    If you have a question about the code, just comment.


    I use l=checkboxs.length to improve the performance. See http://www.erichynds.com/javascript/javascript-loop-performance-caching-the-length-property-of-an-array/

    0 讨论(0)
提交回复
热议问题