复选框上的 onchange 事件始终显示 this.value = on

onchange event on checkbox always shows this.value = on

复选框类型的输入在触发其 onchange 事件时 this.value 始终设置为 on 即使复选框被勾选,在这种情况下我希望它成为 off

这是预期的行为吗?

<input type="checkbox" onchange="alert(this.value)">

简短回答:不要使用 value 检查复选框的选中状态,而是使用 checked

<input type="checkbox" onchange="alert(this.checked)">

如果您想知道为什么这个值总是-"on",HTML5 规范中有一个规范:

default/on

On getting, if the element has a value attribute, it must return that attribute's value; otherwise, it must return the string "on". On setting, it must set the element's value attribute to the new value.

http://www.w3.org/TR/html5/forms.html#dom-input-value-default-on