2012-03-03 27 views
2

我有一种情况,我想从单个复选框将两个值发布到搜索查询字符串数组中。由于设计原因,我不能只添加另一个复选框。 有问题的复选框看起来像这样:在单个复选框中发布2个值到数组

<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 
+0

隐藏的输入字段,也许?或者你正在提交的表单的其他参数? – Pankucins 2012-03-03 22:01:22

+0

你有权访问处理表单输入的实际PHP代码吗? – 2012-03-03 22:03:05

+0

@Pankucins我尝试了一个隐藏的领域,但似乎已经使条件语句失败。我尝试使用if(isset($ _ POST ['choice_c']))然后回显隐藏的复选框,但它没有发布。 – Mick 2012-03-03 22:13:16

回答

0

一般来说这是不可能送一个值作为两个值。我能想象

一种方式是重新配置的arg_separator.input的INI设置:

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操作之初,除去三---名字。

+0

谢谢!我用第二个想法与jQuery交换,它运作良好。事实上,我意识到我不需要分配位置,只需将其留给wpp_search [property_type] [],它就可以工作。 – Mick 2012-03-03 22:25:04

1

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