使用JavaScript选中/取消选中复选框

如何使用JavaScript选中/取消选中复选框?

1581156 次浏览

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

要检查:

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

取消选中:

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

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

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

并取消检查,

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

尚未提及的重要行为:

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

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

(Fiddle在Chrome46,Firefox 41和IE 11中进行了测试)

click()方法

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

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

但是,这会切换复选框的选中状态,而不是专门将其设置为truefalse。请记住,只有在选中的属性实际更改时,才会触发change事件。

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

checked设置为特定值

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

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

我想指出的是,将“检查”属性设置为非空字符串会导致一个复选框。

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

<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>

试试这个:

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


//UnCheck
document.getElementById('chk').removeAttribute('checked');
function setCheckboxValue(checkbox,value) {
if (checkbox.checked!=value)
checkbox.click();
}

如果出于某种原因,您不想(或不能)在复选框元素上运行.click(),您可以直接通过其. check属性(<input type="checkbox">idl属性)更改其值。

说明,这样做不会触发通常相关的事件(改变),因此您需要手动触发它才能拥有适用于任何相关事件处理程序的完整解决方案。

这是一个原始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>

如果你运行它并单击复选框和按钮,你应该了解它是如何工作的。

请注意,我使用document.query选择器是为了简洁/简单,但这可以很容易地构建为将给定的ID传递给构造函数,或者它可以应用于所有充当复选框的aria-标签的按钮(请注意,我没有费心在按钮上设置ID并为复选框提供aria-labelledby,如果使用这种方法,应该这样做)或任何其他方法来扩展它。

对于单一支票尝试

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

formultitry

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>

我同意目前的答案,但在我的情况下,它不起作用,我希望这段代码将来能帮助某人:

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

使用vanilla 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
}