2017-02-01 58 views
0

我有一个表单,您可以填写多个字段。字段数量不固定,但取决于用户的输入。发送之前合并发布数据

简化形式:

<form method="POST" action="post.php"> 
    Field one: <input type="text" name="field[]" /><br /> 
    Field two: <input type="text" name="field[]" /><br /> 
    Field three: <input type="text" name="field[]" /><br /> 

    <br /><br /> 

    Checkbox one: <input type="checkbox" name="check[]" value="1" /><br /> 
    Checkbox two: <input type="checkbox" name="check[]" value="1" /><br /> 
    Checkbox three: <input type="checkbox" name="check[]" value="1" /><br /> 

    <br /><br /> 

    <input type="submit" value="Submit" /> 
</form> 

我面临的问题是,field one应该checkbox one配对,twotwo等。这听起来不难,对吧?如果一切都被检查和填写,它不是:

Array 
(
    [field] => Array 
     (
      [0] => one 
      [1] => two 
      [2] => three 
     ) 

    [check] => Array 
     (
      [0] => 1 
      [1] => 1 
      [2] => 1 
     ) 
) 

在PHP中,我可以链接数组索引在一起,一切都很好。我面临的问题是,当你不选择第二个复选框时。如果你这样做,会有一个条目在check post data少:

Array 
(
    [field] => Array 
     (
      [0] => one 
      [1] => two 
      [2] => three 
     ) 

    [check] => Array 
     (
      [0] => 1 
      [1] => 1 
     ) 
) 

什么是处理这种情况的最好方法是什么? Ajax提交不是一个选项,但JavaScript操作是。

我正在想办法在每个元素(一个,两个,三个)的JS中创建数组并提交该数据。问题是,我该怎么做,或者是否有更好(更好)的方法来处理这个问题?

+0

可能是复选框的隐藏文本字段。如果复选框选中,隐藏字段获取值,否则隐藏字段为空。 – Eugen

回答

1

您需要配对他们与匹配索引和设置的复选框默认隐藏的输入之前定义它:

Field one: <input type="text" name="field[0]" /><br /> 

       <input type="hidden" name="check[0]" value="0"> 
Checkbox one: <input type="checkbox" name="check[0]" value="1" /><br /> 

所以现在你总是有一个check[0]field[0]匹配的,但它有一定的价值0如果没有检查。

+0

我一直在努力做到这一点,这是肯定的......当然,添加索引是最好的解决方案,并且可以工作。我没有想到它自己... – Mathlight

+0

并感谢您为复选框提出了一个整洁的小技巧...永远不会知道这是可能的。 – Mathlight