从单个复选框向数组发布2个值

时间:2012-03-03 21:54:21

标签: php checkbox multiple-value

我有一种情况,我想从一个复选框向搜索查询字符串数组发布两个值。由于设计原因,我不能只添加另一个复选框。 有问题的复选框如下所示:

<input name="wpp_search[property_type][]" value="rental_home" type="checkbox" id="choice_c"/>
<label for="choice_c">For Rent</label>

我现在在查询字符串中得到的是......

{url}?wpp_search[property_type][0]=rental_home 

但我需要的是将两个值绑定到一个检查,所以我最终得到这个:

{url}?wpp_search[property_type][0]=rental_home&wpp_search[property_type][1]=building

任何简单的解决方案?只有一个其他复选框已经提供了该数组,因此我可以强制将其作为

{url}?wpp_search[property_type][0]=rental_home&wpp_search[property_type][2]=building

2 个答案:

答案 0 :(得分:1)

您可以使用例如“|”分隔值像这样value="value1|value2"。然后您可以使用函数explode:$p = explode("|", $value);并获得2个值。

答案 1 :(得分:0)

通常,不可能将一个值作为两个值发送。

我可以想象的一种方法是重新配置arg_separator.input的原始设置:

arg_separator.input = ";&"

这将允许您使用;来分隔值,然后允许您为该值注入第二个值:

<input name="wpp_search[property_type][0]" 
       value="rental_home;wpp_search[property_type][1]=building"
       ...
/>

如果您在其他表单值中使用值;,您自然需要正确地转义它们以使其兼容。

另一种方法是插入带有该值的隐藏字段,如果选中了复选框,则将其名称更改为正确的名称。如果未选中,则将其名称更改为不正确的名称:

<input type="hidden" name="---wpp_search[property_type][1]" value="=building" />

选择您选择的javascript参考,点击另一个复选框进行所需的DOM操作,删除名称开头的三个---