代码之家  ›  专栏  ›  技术社区  ›  mikemaccana

为什么未选中复选框的值为“开”?

  •  0
  • mikemaccana  · 技术社区  · 5 年前

    (也在中复制) JSfiddle

    给定一个HTML复选框:

    <input type="checkbox">
    

    该复选框显示时不打勾:

    enter image description here

    记录元素的值:

    console.log(document.querySelector('input').value)
    

    on ,即使复选框未选中。

    如何获得正确的值?

    1 回复  |  直到 5 年前
        1
  •  2
  •   mikemaccana    5 年前

    复选框的值是常量。它不会改变(除非你用JavaScript改变它)。如果未指定值,则默认为 on

    以传统形式提交, 仅提交成功的控件,并选中复选框 成功,除非他们被检查

    根据输入的选中状态,不会得到不同的值。


    如果要确定是否在客户端JavaScript中选中复选框,请查看 checked 财产,而不是 value 财产。


    document.querySelectorAll("input").forEach(input => console.log({
      value: input.value,
      checked: input.checked
    }));
    <input type="checkbox" value="on">
    <input type="checkbox" value="off" checked>
    <input type="checkbox">
    <input type="checkbox" value="foo" checked>
        2
  •  1
  •   tibetty    5 年前

    https://developer.mozilla.org/en-US/docs/Web/HTML/Element/input/checkbox#Value

    如果省略了value属性,则复选框的默认值为on,因此在这种情况下提交的数据将为subscribe=on

        3
  •  1
  •   Fabian    5 年前

    value 复选框的属性。当您发送表单并选中复选框时,您将收到一个名称/值对(checkboxname=on)。这就是你需要的地方 价值 属性(以及 name

    你真正想做的是:

    console.log(document.querySelector('input').checked)