【问题标题】:"A, B or none" input for HTML formsHTML 表单的“A、B 或无”输入
【发布时间】:2010-11-03 21:31:58
【问题描述】:

我有一种情况,我想允许将表单变量设置为一组值中的一个(在我当前的情况下为真/假)或未设置(在这种情况下,不返回任何值而不是一些'none ' 值或空白)。复选框可以给出未设置的位,但只能给出一个设置值。无线电元素可以工作,有点。但是一旦选择了一个值,就没有办法回到未设置的状态。无论如何,我查看的所有其他输入总是设置变量。

我是遗漏了什么,还是只能接受一个不太理想的解决方案?

【问题讨论】:

    标签: html forms input


    【解决方案1】:

    三个单选按钮或一个<select> 和三个<option> 都可以。

    【讨论】:

    • 我在发帖前都试过了。对于这两种情况,没有办法让查询不包含变量(与存在并具有空白值相反)。
    • @BCS:在这种情况下,将两个单选按钮和一个“无”按钮链接到重置两者状态的 JS。不是很好的用户界面,但它会工作。
    【解决方案2】:

    放置三个收音机:A、B 和无

    【讨论】:

    • 我不想要 none 甚至是空白值。我什至不想拥有价值。
    【解决方案3】:

    执行如下所示的“下拉菜单”:http://www.echoecho.com/htmlforms11.htm

    将默认值创建为“无”,然后是选项 A,然后是选项 B。

    【讨论】:

      【解决方案4】:

      下拉列表怎么样

      ---Please Select---
      Option A
      Option B
      

      我最近在网上申请了很多工作,这是人们普遍采取的途径。

      【讨论】:

        【解决方案5】:

        下拉框能用吗?

        <select name="choices">
          <option>(None)</option>
          <option value="a">Choice A</option>
          <option value="b">Choice B</option>
        </select>
        

        【讨论】:

        • 选项 none 默认为空白。我想我可以在后端过滤掉它们,但我宁愿不必这样做。 (如果其中一个合法值是空白会发生什么?)
        • @BCS: 输入 value="none" 就可以了
        • @nico:我不想要任何值,不是空值,甚至是“none”值。
        • @BCS:请参阅我的答案评论中的解决方案。无论如何,我不明白为什么你不能在后端过滤它。在我假设的 3 种情况下,您将做不同的事情,所以只需输入 3 个不同的值,就这么简单。写if(!isset($_GET["choice"])if($_GET["choice"] == "none")有什么区别???
        • @nico:当我事先不知道我可以安全地使用什么值作为“无”值时,问题就来了。在我的例子中,处理将标志转换为 SQL where 子句:' and '.join('%s="%s"' % (k,v) for (k,v) in args.iteritems())。对于我目前的情况,我可以选择一个永远不会看到的值,但在其他情况下,我可能不知道在运行时之前我需要接受哪些值。
        【解决方案6】:

        您需要使用一些 javascript。如果你有 jQuery,有几个三态复选框插件。

        例如:http://plugins.jquery.com/project/tristate-checkbox

        如果你用谷歌搜索“三态复选框”,也可能有非 jQuery 脚本

        例如:http://caih.org/open-source-software/tri-state-checkbox-in-javascript/

        【讨论】:

          【解决方案7】:

          在一组中使用 3 个单选按钮,您可以使用 CSS(visibility:hidden;display:none;)隐藏第一个“无”单选按钮,如果在表单验证期间仍选择该单选按钮,则用户没有t 选择真或假收音机。

          编辑(发布 cmets):

          如果不需要 Javascript,那么您可以有条件地在隐藏收音机上应用“hideableItem”类,如果脚本被禁用,最糟糕的情况是 3 个收音机供用户选择,正如其他人所描述的那样.如果启用 JS,则默认单选会隐藏并提供我所描述的行为。

          这里描述了如果 JS 被禁用/启用的条件隐藏技术:http://lucassmith.name/2008/10/script-to-add-css-only-when-javascript-is-available.html

          我一直都在用,很好用。

          【讨论】:

          • 但是,如果他们在选择真假后改变主意,他们如何回到无?
          • 我想至少你可以在你的单选按钮中添加监听器,如果用户点击单选并且它被选中,点击的单选将变为未选中,隐藏的单选再次成为选定的值。涉及最少的 JavaScript。
          猜你喜欢
          • 1970-01-01
          • 2018-10-01
          • 1970-01-01
          • 1970-01-01
          • 2011-01-31
          • 1970-01-01
          • 2013-05-28
          • 2011-08-19
          • 1970-01-01
          相关资源
          最近更新 更多