2012-03-29 74 views
0

我最近遇到这样的:HTML:元素的多个名称/值?

  • <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> 
    

我很好奇,如果有发送多个键/值,如果第二个参数2被发送,没有任何JS的方式。
因此,该页面会导致对类似:

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

我的值改为从"bar""bar&amp;param3=foobar",但很明显的特殊字符(&=)会编码。

任何想法? (再次W/O JS)


隐藏的元素不会因为它的工作将始终发送参数,这将对其他事情产生负面影响被称为由处理器(运行script.php)

+0

您可以通过名称和值添加隐藏的输入其他参数将在表单提交时发送。但是这将始终发生,无论哪个单选按钮被检查。 – Stefan 2012-03-29 19:28:22

+0

@Stefan:正是:),试图避免这一点。想象一下,“script.php”确实是一个处理程序,在最好的情况下,它会混乱地址栏,最糟糕的情况是它会影响内容。在这种情况下,我试图创建一个简单的'debug'单选按钮。现在,我设置了复选框,但为了让用户更清楚,我想创建一个调试列,与之前的单选按钮完全相同,但是添加了'debug = 1'(或类似的参数) – vol7ron 2012-03-29 20:06:51

+0

没有办法做到这一点没有JavaScript。您还可以将单选按钮组分成​​两种形式,第二种形式有一个额外的'param3'输入,其值为'foobar',但是您将无法使用一个按钮提交这两个表单。 – Stefan 2012-03-29 21:20:23

回答

2

不,不能这样做。相反,从服务器端执行它(如在,期望输入,并且如果到达则相应地执行)。如果它不是来自用户,那不是用户输入!

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

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

可能会选择这个,因为'不,它不能做' – vol7ron 2012-03-29 20:13:34

1
然后在服务器侧处理所述第三参数之前

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

,检查是否所述第二值是“开”(选中):

可以传递的第三参数作为隐藏元件。

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

1

通常游戏,你会使用一个自定义的分隔符,解析它在服务器上:

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

只要标记的名称是不同的,他们将获得通过为$ _GET或$ _POST阵列的不同元素...