在发送之前合并帖子数据

时间:2017-02-01 20:11:20

标签: javascript php html post

我有一个表单,您可以在其中填写多个字段。字段数量不固定,但取决于用户的输入。

简化形式:

<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 onetwotwo配对,依此类推。这听起来不难,对吗?如果检查并填写了所有内容,则不是:

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中为每个元素(一,二,三)创建数组并提交数据的方法。问题是,我该怎么做,或者是否有更好(更好)的方法来处理这个问题?

1 个答案:

答案 0 :(得分: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