【问题标题】:HTML troolean form elementHTML troolean 表单元素
【发布时间】:2011-05-14 06:39:12
【问题描述】:

用 HTML 表单模拟 troolean 变量的最佳方法是什么?

具体来说,我有一个要排序的列,因此它可以具有三种状态:未排序、升序和降序。我想将状态存储在表单中,以便在页面提交后恢复。

有没有一种优雅的方式来做到这一点?

编辑

这里鼓励使用 Javascript。现在我的解决方案是隐藏输入,值为 0,1 或 2。单击排序按钮时会更改该值,并与表单一起提交。但也许有更好的方法?

编辑

这个问题显然已经被问过了:Tri-state Check box in HTML?。投票结束。

【问题讨论】:

  • “troolean”是一个普遍接受的术语吗?
  • 也许不是——有不同的表达方式吗?我正在从 Win32 API 中将它用于具有三种状态(真/假/错误)的变量。
  • 我认为规范的“troolean”值是"true, false, file not found"...
  • 对于这样的事情我会说tri-state。在 Python 中,我们通常只会说 TrueFalseNone。如果您需要第四个,Ellipsis 往往是它。 :-)

标签: javascript html tri-state-logic


【解决方案1】:

使用 3 个 radio 框或带有 3 个元素的 select 列表。

【讨论】:

    【解决方案2】:

    不要追求神奇的数字。只要数据通过 HTTP 以文本形式传输,您不妨只使用“升序”、“降序”和“未排序”或空值。

    单选按钮可能就是这样。 Select 对于三个元素来说太过分了。如果你想要一个不同的界面,你可以使用 javascript 来隐藏那些启用脚本的单选按钮。

    【讨论】:

    • 是的,无论你做什么,都不要使用select。我认为最多大约五个(有时更多),选择是不友好的 - 你只能看到一个值,所以你可能无法分辨其他值是什么,它需要两次点击而不是一次(和键盘可访问性选择有时是狡猾的,尤其是当您看不到选项时,因此不知道有多少选项)。不要因为三个选项而称其为矫枉过正——称其为糟糕的设计!
    【解决方案3】:

    我发现 gmail 顶部复选框的工作方式相当直观:

    • 如果未选择任何项目,则复选框为空
    • 如果至少选择了一个项目,则复选框被选中并且不透明度为 0.5
    • 如果所有项目都被选中,复选框被选中,透明度为 1

    您不需要像引用页面那样的关于三态复选框的图像。

    【讨论】:

    • 谢谢 Mic,我正在寻找的路上。无论如何都会给我一些新的想法。
    猜你喜欢
    • 2022-01-06
    • 1970-01-01
    • 2012-11-11
    • 2015-11-23
    • 1970-01-01
    • 2017-01-11
    • 1970-01-01
    • 2020-12-10
    • 2011-04-27
    相关资源
    最近更新 更多