【发布时间】:2015-08-07 08:47:20
【问题描述】:
我的页面上的表单中有一个<select name="id[]"> 下拉菜单。我还有一个按钮,可以通过 jQuery 添加更多 select 框(及其容器):
$(document).ready(function() {
// $(".add-blank").click(function() {
$(document).on("click", ".add-blank", function() {
var container = $(this).closest("div");
container.find(".blank-group").last().clone().appendTo(container.find(".blank-container"));
});
});
但是,当我POST 将此信息写入脚本时,var_dump($_POST['id']) 时,无论该数组中应该有多少项,该数组都只有一个值:
array(1) { [0]=> string(5) "21699" }
我几乎可以肯定这是因为第一个选择框在页面加载时在代码中,但其余的选择框是在 DOM 准备好后通过 jQuery 添加的。
我的问题是,我该如何克服这个问题?
正如您在上面的 jQuery 中看到的,我尝试将基本的 .click() 更改为 .on("click"),但这似乎没有任何效果。
我的表单的基本 HTML 是这样的:
<form>
<div class="blank-container">
<div class="form-group blank-group">
<select name="id[]"></select>
</div>
</div>
<button class="add-blank" type="button"></button>
<button type="submit"></button>
</form>
然后按三下.add-blank 按钮扩展表单,如下所示:
<form>
<div class="blank-container">
<div class="form-group blank-group">
<select name="id[]"></select>
</div>
<div class="form-group blank-group">
<select name="id[]"></select>
</div>
<div class="form-group blank-group">
<select name="id[]"></select>
</div>
<div class="form-group blank-group">
<select name="id[]"></select>
</div>
</div>
<button class="add-blank" type="button"></button>
<button type="submit"></button>
</form>
如果我在这些选择中分别选择值111、222、333 和444,我希望POST 如下数组:
array(4) { [0]=> string(3) "111", [1]=> string(3) "222", [2]=> string(3) "333", [3]=> string(3) "444" },
但无论我尝试在 id[] 数组中传递多少/很少的值,只有第一个值到达脚本,因为最初加载时页面上只有一个 <select>..
【问题讨论】:
-
选择是否添加到表单中的 div 中?你能显示html吗?如果您使用
name="id[]",它应该可以工作 -
很遗憾没有。我了解在传递到下一页时如何处理
id[]数组。我的问题首先在于如何发布它。因为 jQuery 会在页面加载后动态添加新的<select>框,所以它们技术上不在页面的源代码中。 -
试试这个:jsfiddle.net/mpdc/ooq6542d/2 我将这个准系统代码的选择器名称从
div更改为form。