【问题标题】:HTML: Multiple name/value for an element?HTML:一个元素的多个名称/值?
【发布时间】:2012-03-29 19:23:00
【问题描述】:

我最近遇到了这样的事情:

  • <form method="get" action="/somewebdir/script.php">
       <input type="radio" name="param0" value="foo" />
       <input type="radio" name="param1" value="foo" />
       <input type="radio" name="param2" value="bar" />
       <input type="radio" name="param2" value="bar" checked="checked" />
    </form>
    

我很好奇是否有办法发送多个键/值,如果发送第二个 param2,没有任何 JS。
这样页面会产生类似的结果:

  • http://domain/somewebdir/script.php?param2=bar&amp;param3=foobar

我将值从"bar" 更改为"bar&amp;amp;param3=foobar",但显然特殊字符(&amp;=)将被编码。

有什么想法吗? (再次没有 JS)


隐藏元素不起作用,因为它总是会发送参数,这会对处理程序(script.php)调用的其他东西产生负面影响

【问题讨论】:

  • 您可以添加隐藏的输入,其中包含将在提交表单时发送的其他参数的名称和值。但这总会发生,无论选中哪个单选按钮。
  • @Stefan:正是:),试图避免这种情况。想象一下“script.php”真的是一个处理程序,在最好的情况下,它会弄乱地址栏,在最坏的情况下,它会对内容产生影响。在这种情况下,我试图创建一个简单的debug 单选按钮。现在,我正在设置复选框,但为了让用户更清楚,我想创建一个调试列,与之前的单选按钮完全相同,但添加了 debug=1(或类似的参数)
  • 没有javascript就无法做到这一点。您还可以将单选按钮组拆分为 2 个表单,第二个表单有一个额外的 param3 输入,值为 foobar,但是您将无法使用一个按钮提交这两个表单。
  • 我知道这是一个很长的尝试,我可能知道 99% 的语言,但不确定 HTML5 是否有新的东西。

标签: html forms webforms get


【解决方案1】:

不,不能这样做。相反,从服务器端执行(例如,期待输入,如果它到达,则采取相应的行动)。如果不是来自用户,就不是用户输入!

如果您需要为每个用户指定一个特定值,您可以使用隐藏输入,并使用单选按钮进行交叉检查。

<input type="hidden" name="param3" value="value here">

【讨论】:

  • 可能会因为No, it can't be done而选择这个
  • 对于任何将来来到这里的用户:有更好的选择:developer.mozilla.org/en-US/docs/Learn/HTML/Howto/… 简而言之:任何以“data-”开头的属性都是自动有效且可访问的。像 等。这是现代浏览器中最流行的方法
【解决方案2】:

通常您会使用自定义分隔符并在服务器上对其进行解析:

<input type="radio" name="param2" value="bar|happy|friday" checked="checked" />

【讨论】:

    【解决方案3】:

    您可以将第三个参数作为隐藏元素传递:

    <input type="hidden" name="param3" value="foobar" />
    

    然后在服务器端,在处理第三个参数之前,检查第二个值是否为“on”(选中)。

    如果服务器端脚本 (script.php) 超出您的控制范围,并且当且仅当给定第二个参数时,您才需要传递第三个参数,那么没有 JS,您将不走运。

    【讨论】:

      【解决方案4】:

      您需要使用“隐藏”元素。您可以根据需要处理额外的元素。

      http://www.w3.org/wiki/HTML/Elements/input/hidden

      【讨论】:

        【解决方案5】:

        只要标签的名称不同,它们就会作为 $_GET 或 $_POST 数组的不同元素传递...

        【讨论】:

          【解决方案6】:
          <form method="get" action="/somewebdir/script.php">
             <input type="radio" name="param0" value="foo" />
             <input type="radio" name="param1" value="foo" />
             <input type="radio" name="param2[]" value="bar" />
             <input type="radio" name="param2[]" value="bar" checked="checked" />
          </form>
          

          if (isset ($_POST['param2'])) {$param2 = $_POST['param2'];}
          $param2= 内爆(" ",$param2);

          echo $param2;
          

          【讨论】:

            猜你喜欢
            • 2017-07-11
            • 2016-06-29
            • 1970-01-01
            • 2022-09-25
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            相关资源
            最近更新 更多