如何使用JavaScript检查/不检查复选框?
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
未被提及的重要行为:
以编程方式设置选中属性,不会触发复选框的更改事件。
你自己看看这把小提琴: http://jsfiddle.net/fjaeger/L9z9t04p/4/
(小提琴测试在Chrome 46, Firefox 41和IE 11)
click()方法
有一天,您可能会发现自己正在编写依赖于触发事件的代码。为了确保事件触发,调用checkbox元素的click()方法,如下所示:
document.getElementById('checkbox').click();
但是,这将切换复选框的选中状态,而不是专门将其设置为true或false。请记住,change事件只应该在选中的属性实际发生更改时触发。
它也适用于jQuery的方式:使用prop或attr设置属性,不触发更改事件。
设置检查到特定的值
您可以在调用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
我想指出的是,将'checked'属性设置为非空字符串会导致选中框。
因此,如果您将'checked'属性设置为"false",则复选框将被选中。我必须将值设置为空字符串,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(),你可以直接通过它的.checked属性(<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>
如果您运行此程序并同时单击复选框和按钮,您应该会了解它是如何工作的。
注意,我使用了文档。querySelector的简洁/简单,但这可以很容易地构建出来,要么有一个给定的ID传递给构造函数,或者它可以应用于充当复选框的aria-labels的所有按钮(注意,我没有费心在按钮上设置一个ID,并给复选框一个aria- labledby,如果使用此方法,应该这样做)或任何其他方法来展开它。最后两个addeventlistener只是演示它是如何工作的。
对于单个检查,请尝试
myCheckBox.checked = 1 <input type="checkbox" id="myCheckBox">给她打电话
对于多重尝试
document.querySelectorAll(“.imChecked”)。forEach (c = > c.checked = 1) 买酒:<input type="checkbox" class="imChecked"><br> 播放流畅的爵士音乐:<input type="checkbox"><br> 剃须:<input type="checkbox" class="imChecked"><br>
使用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
}
推荐文章
- 如何使用Jest测试对象键和值是否相等?
- 将长模板文字行换行为多行,而无需在字符串中创建新行
- 如何在JavaScript中映射/减少/过滤一个集?
- Bower: ENOGIT Git未安装或不在PATH中
- 添加javascript选项选择
- 在Node.js中克隆对象
- 为什么在JavaScript的Date构造函数中month参数的范围从0到11 ?
- 使用JavaScript更改URL参数并指定默认值
- 在window.setTimeout()发生之前取消/终止
- 如何删除未定义和空值从一个对象使用lodash?
- 检测当用户滚动到底部的div与jQuery
- 在JavaScript中检查字符串包含另一个子字符串的最快方法?
- 检测视口方向,如果方向是纵向显示警告消息通知用户的指示
- ASP。NET MVC 3 Razor:在head标签中包含JavaScript文件
- 禁用从HTML页面中拖动图像