我有一个表单,您可以在其中填写多个字段。字段数量不固定,但取决于用户的输入。
简化形式:
<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中为每个元素(一,二,三)创建数组并提交数据的方法。问题是,我该怎么做,或者是否有更好(更好)的方法来处理这个问题?
答案 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
。