使用javascript更改复选框的''checked'属性
Posted
技术标签:
【中文标题】使用javascript更改复选框的\'\'checked\'属性【英文标题】:changing ''checked' attribute of a checkbox using javascript使用javascript更改复选框的''checked'属性 【发布时间】:2012-08-17 00:09:11 【问题描述】:现在当它第一次加载 html 页面时,我的复选框是这样创建的:
<input type="checkbox" id="CBOX1" name="CBOX1" onclick="onCBOX(this)" disabled/>
在同一个 html 中的函数中:
boolean checked = true;
document.theForm.elements['CBOX1'].checked = true;
由于某种原因,稍后在页面上调用该函数时,未选中复选框值。是因为当我第一次创建复选框时,我创建它时没有“选中”属性?然后当我为它分配一个值时,该元素似乎不再包含选中的属性,就像我检查页面源时一样。还是一样的……
<input type="checkbox" id="CBOX1" name="CBOX1" onclick="onCBOX(this)" disabled/>
为了简单起见,我确定使用 AJAX 对该元素的其他属性进行了更改,但我不知道为什么不保留选中的属性...还有什么替代方法?
【问题讨论】:
checked
是变量吗?如果是,它在哪里定义?它有什么价值?您必须为 document.theForm.elements['CBOX1'].checked
分配一个布尔值。
checked
在 javascript 的第一行中来自哪里?复选框的checked
属性应该是一个布尔值,真或假。
checked
是一个已定义的布尔变量,它是真还是假?
大声笑。 3 个人有同样的问题
How do I check a checkbox with jQuery or JavaScript? 的可能重复项
【参考方案1】:
勾选复选框:
document.theForm.elements['CBOX1'].checked = true;
document.theForm.elements['CBOX1'].checked = "checked";
取消选中复选框:
document.theForm.elements['CBOX1'].checked = false;
如果您希望在加载时取消选中它,请不要触摸它,默认情况下它是未选中的。
此外,如果您在输入字段中使用 disabled 属性,则不会注册任何点击事件。
请参阅此jsfiddle 以获取示例。
编辑
如果可点击性不是问题,那么就按照我已经指出的去做。这是一个完整的工作示例。
<html>
<head>
</head>
<body>
<input id="tar" type="checkbox" disabled />
<input type="checkbox" onclick="callFunc(this)" />
<script type="text/javascript">
function callFunc(elem)
document.getElementById("tar").checked = elem.checked;
</script>
</body>
</html>
【讨论】:
我需要在页面加载时取消选中它,即通过 然后在用户使用它之后,该函数将添加一个'checked'属性给它.. @bouncingHippo - 如果您希望用户与您的输入元素进行交互,请删除 disabled 属性。 可点击性不是这里的问题,当我第一次创建复选框 它没有“已检查”属性。稍后,我使用 document.theForm....checked=true 似乎不起作用,因为检查页面源显示 即使在调用该函数之后仍然缺少选中的属性... @bouncingHippo - 你一定做错了。有关前面所述的属性设置的清晰工作示例,请参见编辑。在做出错误假设或开发之前更好地调试您的代码可能需要很长时间。 MOREOVER,检查页面源仅显示页面的状态是什么加载时。 你说得对,我用你的建议解决了这个问题。谢谢,请点赞这个问题,不胜感激【参考方案2】:尝试将其设置为 true
:
document.theForm.elements['CBOX1'].checked = true;
【讨论】:
我不能先将其设置为 true,因为我们的客户希望在页面首次加载时将其设置为 check=false,并且根据传入的数据,它将 check=true.... 然后根据传入的数据设置值true
。不确定您的问题是什么。【参考方案3】:
试试这个,反正没测试过。
document.theForm.elements['CBOX1'].checked = true;
【讨论】:
我不能先将其设置为 true,因为我们的客户希望在页面首次加载时将其设置为 check=false,并且根据传入的数据,它将 check=true.... 然后将true
更改为false
。即document.theForm.elements['CBOX1'].checked = false;
。希望这能解决你的问题,因为我不清楚你想要实现什么。
换句话说 ?以上是关于使用javascript更改复选框的''checked'属性的主要内容,如果未能解决你的问题,请参考以下文章
区分用户更改 Checkbox.Checked 值还是以编程方式更改
如何使用 JavaScript 或 jquery 选中/取消选中复选框?
MatCheckbox preventDefault()和event.checked值