Answers:
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);
attr
还是prop
?
.checked = true/false
不会触发change
\ - :事件
尚未提及的重要行为:
以编程方式设置checked属性,不会触发change
checkbox 的事件。
自己看看这个小提琴:http :
//jsfiddle.net/fjaeger/L9z9t04p/4/
(Fiddle已在Chrome 46,Firefox 41和IE 11中进行了测试)
click()
方法有一天,您可能会发现自己在编写代码,这取决于被触发的事件。为确保触发事件,请调用click()
checkbox元素的方法,如下所示:
document.getElementById('checkbox').click();
但是,这将切换复选框的选中状态,而不是将其专门设置为true
或false
。请记住,change
仅当checked属性实际更改时,才应触发该事件。
这也适用于jQuery方式:使用prop
或设置属性attr
不会触发change
事件。
checked
为特定值您可以checked
在调用click()
方法之前测试属性。例:
function toggle(checked) {
var elm = document.getElementById('checkbox');
if (checked != elm.checked) {
elm.click();
}
}
在此处阅读有关click方法的更多信息:https :
//developer.mozilla.org/en-US/docs/Web/API/HTMLElement/click
elm.dispatchEvent(new Event('change'));
去检查:
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
我想指出的是,将'checked'属性设置为非空字符串会导致一个复选框。
因此,如果将'checked'属性设置为“ false”,则会选中该复选框。我必须将值设置为空字符串,null或布尔值false,以确保未选中该复选框。
尝试这个:
//Check
document.getElementById('checkbox').setAttribute('checked', 'checked');
//UnCheck
document.getElementById('chk').removeAttribute('checked');
如果由于某种原因,您不想(或无法).click()
在checkbox元素上运行,则可以直接通过其.checked属性(IDL属性为<input type="checkbox">
)直接更改其值。
请注意,这样做不会触发通常相关的事件(change),因此您需要手动触发它以具有可与任何相关事件处理程序一起使用的完整解决方案。
这是原始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.querySelector,但这很容易构建为将给定的ID传递给构造函数,或者可以将其应用于用作复选框的aria标签的所有按钮(请注意,不必费心在按钮上设置id并为复选框提供aria-labelledby,如果使用此方法,则应这样做)或其他多种扩展方式。最后两个addEventListener
只是演示其工作方式。
我同意当前的答案,但就我而言,它不起作用,希望此代码将来对某人有所帮助:
// check
$('#checkbox_id').click()