使用JavaScript(jQuery或Vanilla)选中/取消选中复选框?

时间:2011-11-21 02:12:17

标签: javascript jquery

如何使用JavaScript,jQuery或vanilla选中/取消选中复选框?

14 个答案:

答案 0 :(得分:833)

使用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);

答案 1 :(得分:107)

尚未提及的重要行为:

以编程方式设置已选中属性,但不会触发复选框的change事件

在这个小提琴中亲自看看:
http://jsfiddle.net/fjaeger/L9z9t04p/4/

(小提琴在Chrome 46,Firefox 41和IE 11中测试过)

click()方法

有一天,您可能会发现自己编写的代码依赖于被触发的事件。要确保事件触发,请调用checkbox元素的click()方法,如下所示:

document.getElementById('checkbox').click();

但是,这会切换复选框的已检查状态,而不是专门将其设置为truefalse。请记住,{checked}属性实际发生更改时,change事件才会触发。

它也适用于jQuery方式:使用propattr设置属性,不会触发change事件。

checked设置为特定值

您可以在调用checked方法之前测试click()属性。例如:

function toggle(checked) {
  var elm = document.getElementById('checkbox');
  if (checked != elm.checked) {
    elm.click();
  }
}

在此处阅读有关点击方法的更多信息:
https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click

答案 2 :(得分:34)

检查:

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

取消选中:

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

答案 3 :(得分:13)

我们可以检查微粒复选框,

$('id of the checkbox')[0].checked = true

并取消选中,

$('id of the checkbox')[0].checked = false

答案 4 :(得分:13)

我想注意,将'checked'属性设置为非空字符串会导致选中复选框。

因此,如果您将“已检查”属性设置为 “false” ,则会选中该复选框。我必须将值设置为空字符串 null 或布尔值 false 以确保未选中该复选框。

答案 5 :(得分:7)

试试这个:

//Check
document.getElementById('checkbox').setAttribute('checked', 'checked');

//UnCheck
document.getElementById('chk').removeAttribute('checked');

答案 6 :(得分:4)

<script type="text/javascript">
    $(document).ready(function () {
        $('.selecctall').click(function (event) {
            if (this.checked) {
                $('.checkbox1').each(function () {
                    this.checked = true;
                });
            } else {
                $('.checkbox1').each(function () {
                    this.checked = false;
                });
            }
        });

    });

</script>

答案 7 :(得分:3)

function setCheckboxValue(checkbox,value) {
    if (checkbox.checked!=value)
        checkbox.click();
}

答案 8 :(得分:2)

我同意当前的答案,但就我而言,它不起作用,希望这段代码对以后的人有所帮助:

// check
$('#checkbox_id').click()

答案 9 :(得分:0)

如果由于某种原因,您不想(或无法)在checkbox元素上运行.click(),则可以直接通过其.checked属性({{3 }},共IDL attribute)。

请注意,这样做不会触发通常相关的事件(<input type="checkbox">),因此您需要手动将其触发才能拥有可与任何相关事件处理程序一起使用的完整解决方案。

这是原始javascript(ES6)中的一个功能示例:

Complain::whereHas('preset.complainType', function($query) {
    $query->whereRaw('SUBTIME(NOW(), lifetime) > complains.created_at');
})->whereDate('complains.created_at', '=', Carbon::today());
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);
}

如果您运行此程序并单击复选框和按钮,您应该会了解其工作原理。

请注意,为了简洁/简单起见,我使用document.querySelector,但是可以很容易地将其构建为将给定的ID传递给构造函数,或者可以将其应用于用作复选框的aria标签的所有按钮(请注意,我没有在按钮上设置id并为复选框指定aria-labelledby的麻烦,如果使用此方法,则应这样做)或其他多种扩展方式。最后两个<input type="checkbox" id="checkboxID" /> <button aria-label="checkboxID">Change the checkbox!</button> <div class="checkboxfeedback">No changes yet!</div>仅用于演示其工作原理。

答案 10 :(得分:0)

对于单项检查,请尝试

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

多次尝试

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>

答案 11 :(得分:0)

香草(PHP)将打开和关闭复选框并存储结果。

<?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 = "";  
?>

答案 12 :(得分:0)

使用原版js:

//for one element: 
document.querySelector('.myCheckBox').checked = true  //will select the first matched element
document.querySelector('.myCheckBox').checked = false//will unselect the first matched element

//for multiple elements:
for (const checkbox of document.querySelectorAll('.myCheckBox')) {
//iterating over all matched elements

checkbox.checked = true //for selection
checkbox.checked = false //for unselection
}

答案 13 :(得分:-2)

如果要使用TypeScript,可以执行以下操作:

function defaultCheckedFirst(checkGroup: any): void {
        for (let i = 0; i < checkGroup.length; i++) {
            (<HTMLInputElement>radionGroups[i]).checked = (i === 0 ? true : false);
        }
    }