javascript - 发送前合并帖子数据

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

最佳答案

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

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

因此,现在您始终有一个与 field[0] 匹配的 check[0],但如果不检查,它将具有值 0

关于javascript - 发送前合并帖子数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41988807/

相关文章:

html - 自定义选择框在 IE 中无法正常工作

javascript - 如何防止 scrollIntoView(true) 发生

javascript - 类型错误 : Cannot read property 'pathname' of undefined in react/redux testing

javascript - 如何更新 Bootstrap 模态中的表单字段?

javascript - Ajax 动态加载选择选项

php - 在服务器端创建包含一些数据的 PDF,然后为用户创建下载链接

javascript - 未捕获的 DOMException : Failed to execute 'setStart' on 'Range' : The offset is larger than the node's length

php - mysql 查询 union 和 mysql_num_rows

php - 将包含 URL 的文本转换为超链接的 PHP 正则表达式是什么?

html - 垂直居中的 div 包含在 float 的 div 中