复选框被勾选了,即使checked=false。

3

我希望用Javascript取消选中复选框,但是不起作用。然后我尝试直接在HTML中将checked属性设置为false,但即使这样也不起作用:(我也尝试了checked="false" ...)

我的HTML代码:

<input type="checkbox" id="dateCheckbox" checked=false >
<label for="dateCheckbox"> Keinen Zeitraum angeben</label>

结果:

结果

为什么它仍然被选中?

你在另一个浏览器上测试过吗?可能是浏览器的问题。 - Long Luong
只需设置“checked”属性即可,如果您想要选中复选框。 - Long Luong
我已经在Firefox、Chrome和Edge中尝试过了,结果都一样 ;) - Boommeister
6个回答

8

HTML5 不使用 truefalse 表示布尔属性。布尔属性可以通过只指定属性名称来表示为 true,而省略该属性则表示为 false

(对于 XHTML5,您需要将属性名称作为值提供,以符合 XML 的属性规则):


因此,对于未选中的复选框,请将其更改为:

<input type="checkbox" id="dateCheckbox" checked=false >

对于 HTML5 和 XHTML5:

<input type="checkbox" id="dateCheckbox">

对于已选中的复选框,改变这个:
<input type="checkbox" id="dateCheckbox" checked=true >

转换为 HTML5:

<input type="checkbox" id="dateCheckbox" checked>

或者这个(XHTML5):
<input type="checkbox" id="dateCheckbox" checked="checked" />

5

checked 属性设置为 false 是行不通的。

如果 input 元素上存在 checked 属性,则无论您给它什么布尔值,input 元素始终处于选中状态。要取消 input 元素的选中状态,您必须删除 checked 属性。

通过 JavaScript 取消复选框输入元素的选中状态,可以使用 removeAttribute() 方法删除 checked 属性。

以下代码片段在 2 秒后通过 JavaScript 取消选中复选框。

const checkInput = document.querySelector('#dateCheckbox');

setTimeout(() => {
  checkInput.removeAttribute('checked');
}, 2000);
<input type="checkbox" id="dateCheckbox" checked>
<label for="dateCheckbox"> Keinen Zeitraum angeben</label>


2
复选框的工作方式如下。

<input type="checkbox" id="dateCheckbox" checked>
<label for="dateCheckbox"> Keinen Zeitraum angeben</label>
<br />
<input type="checkbox" id="dateCheckbox">
<label for="dateCheckbox"> Keinen Zeitraum angeben</label>


1

实际上,checked 中是否有任何内容并不重要,只要它存在即可。

例如:

<input type="checkbox" id="dateCheckbox" checked>
<label for="dateCheckbox"> Keinen Zeitraum angeben</label>

但是,省略 checked 的效果与预期相同。

<input type="checkbox" id="dateCheckbox">
<label for="dateCheckbox"> Keinen Zeitraum angeben</label>

请查看 https://developer.mozilla.org/zh-CN/docs/Web/HTML/Element/input/checkbox


1

不幸的是,checked 不是布尔值(true 或 false)。如果在 <input type="checkbox"> 标签中存在 checked 属性,则无论您设置什么值,它都将被选中。如果省略它,则会按照预期工作,因为没有 checked 属性。


1
你需要移除“checked”属性来使复选框取消选择。checked=false|true没有意义,就像select的选项中的“selected”一样。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接