代码之家  ›  专栏  ›  技术社区  ›  c z

HTML复选框默认值

  •  0
  • c z  · 技术社区  · 7 年前

    我有一个HTML复选框:

    <input name="foo" id="foo" type="checkbox" value="1" 𝙨𝙩𝙖𝙩𝙪𝙨/>
    

    在我的应用程序中,复选框应该保留 checked 表格提交之间的状态( method=GET ),因此我的服务器端代码只需插入 选中的 状态标志如果 foo 在获取数据中找到。

    if "foo" in GET:
        𝙨𝙩𝙖𝙩𝙪𝙨 = ' checked'
    else:
        𝙨𝙩𝙖𝙩𝙪𝙨 = ''
    

    这很好,而且有效。然而,当我想要复选框时,逻辑就崩溃了 默认选中 ,因为从服务器端来看,我无法区分:

    • 用户正在取消选中该复选框( "foo" not in GET )在这种情况下,我应该不选中复选框。
    • 第一次访问表单但尚未指定值的用户( 而且 “foo”不在GET中 )在这种情况下,我应该默认选中复选框。

    我考虑过使用 hidden input 这会告诉我这是否是用户提交,但由于数据被传入,这会弄乱URL GET 1.我觉得应该有更好的办法。

    1 回复  |  直到 7 年前
        1
  •  1
  •   vandijkstef    7 年前

    假设服务器知道:

    • 所有(复选框)输入
    • 以下哪些输入是默认选中的

    您可以反转测试:

    • 测试所有已知的服务器端字段(将服务器端数据循环到…)
    • 查看它们是否存在于接收的数据中(…测试客户端数据(每次))
    • 如果默认情况下选中了,而不是在数据中,则您知道用户未选中它