Check/Uncheck checkbox with JavaScript (jQuery or vanilla)?

后端 未结 12 1284
渐次进展
渐次进展 2020-11-22 09:39

How can a checkbox be checked/unchecked using JavaScript, jQuery or vanilla?

相关标签:
12条回答
  • 2020-11-22 10:21

    to check:

    document.getElementById("id-of-checkbox").checked = true;
    

    to uncheck:

    document.getElementById("id-of-checkbox").checked = false;
    
    0 讨论(0)
  • 2020-11-22 10:21

    If, for some reason, you don't want to (or can't) run a .click() on the checkbox element, you can simply change its value directly via its .checked property (an IDL attribute of <input type="checkbox">).

    Note that doing so does not fire the normally related event (change) so you'll need to manually fire it to have a complete solution that works with any related event handlers.

    Here's a functional example in raw javascript (ES6):

    class ButtonCheck {
      constructor() {
        let ourCheckBox = null;
        this.ourCheckBox = document.querySelector('#checkboxID');
    
        let checkBoxButton = null;
        this.checkBoxButton = document.querySelector('#checkboxID+button[aria-label="checkboxID"]');
    
        let checkEvent = new Event('change');
        
        this.checkBoxButton.addEventListener('click', function() {
          let checkBox = this.ourCheckBox;
    
          //toggle the checkbox: invert its state!
          checkBox.checked = !checkBox.checked;
    
          //let other things know the checkbox changed
          checkBox.dispatchEvent(checkEvent);
        }.bind(this), true);
    
        this.eventHandler = function(e) {
          document.querySelector('.checkboxfeedback').insertAdjacentHTML('beforeend', '<br />Event occurred on checkbox! Type: ' + e.type + ' checkbox state now: ' + this.ourCheckBox.checked);
    
        }
    
    
        //demonstration: we will see change events regardless of whether the checkbox is clicked or the button
    
        this.ourCheckBox.addEventListener('change', function(e) {
          this.eventHandler(e);
        }.bind(this), true);
    
        //demonstration: if we bind a click handler only to the checkbox, we only see clicks from the checkbox
    
        this.ourCheckBox.addEventListener('click', function(e) {
          this.eventHandler(e);
        }.bind(this), true);
    
    
      }
    }
    
    var init = function() {
      const checkIt = new ButtonCheck();
    }
    
    if (document.readyState != 'loading') {
      init;
    } else {
      document.addEventListener('DOMContentLoaded', init);
    }
    <input type="checkbox" id="checkboxID" />
    
    <button aria-label="checkboxID">Change the checkbox!</button>
    
    <div class="checkboxfeedback">No changes yet!</div>

    If you run this and click on both the checkbox and the button you should get a sense of how this works.

    Note that I used document.querySelector for brevity/simplicity, but this could easily be built out to either have a given ID passed to the constructor, or it could apply to all buttons that act as aria-labels for a checkbox (note that I didn't bother setting an id on the button and giving the checkbox an aria-labelledby, which should be done if using this method) or any number of other ways to expand this. The last two addEventListeners are just to demo how it works.

    0 讨论(0)
  • 2020-11-22 10:21

    For single check try

    myCheckBox.checked=1
    <input type="checkbox" id="myCheckBox"> Call to her

    for multi try

    document.querySelectorAll('.imChecked').forEach(c=> c.checked=1)
    Buy wine: <input type="checkbox" class="imChecked"><br>
    Play smooth-jazz music: <input type="checkbox"><br>
    Shave: <input type="checkbox" class="imChecked"><br>

    0 讨论(0)
  • 2020-11-22 10:23

    Javascript:

    // Check
    document.getElementById("checkbox").checked = true;
    
    // Uncheck
    document.getElementById("checkbox").checked = false;
    

    jQuery (1.6+):

    // Check
    $("#checkbox").prop("checked", true);
    
    // Uncheck
    $("#checkbox").prop("checked", false);
    

    jQuery (1.5-):

    // Check
    $("#checkbox").attr("checked", true);
    
    // Uncheck
    $("#checkbox").attr("checked", false);
    
    0 讨论(0)
  • 2020-11-22 10:29

    I agree with the current answers, but in my case it does not work, I hope this code help someone in the future:

    // check
    $('#checkbox_id').click()
    
    0 讨论(0)
  • 2020-11-22 10:30

    vanilla (PHP) will check box on and off and store result.

    <?php
        if($serverVariable=="checked") 
            $checked = "checked";
        else
            $checked = "";
    ?>
    <input type="checkbox"  name="deadline" value="yes" <?= $checked 
    ?> >
    
    # on server
    <?php
            if(isset($_POST['deadline']) and
                 $_POST['deadline']=='yes')
                 $serverVariable = checked;    
            else
                 $serverVariable = "";  
    ?>
    
    0 讨论(0)
提交回复
热议问题