我有一个表格,您可以在其中填写多个字段。字段的数量不是固定的,而是取决于用户的输入。
简化形式:
<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
配对, two
与 two
等等。这听起来并不难,对吧?如果所有内容都经过检查并填写,则不是:
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/