找不到这样的问题,我有一个包含一组字段的表单,如果用户单击按钮,则会添加更多字段。我将这些字段与第一个字段相同,并为所有字段集使用name ='array []'。
无论如何,当我提交表单时,使用javascript生成的字段以及原始字段,仅传递原始字段集中的值。
这是在代码点火器中。
我无法传递所有代码,但是pastebin中有生成的html,我将粘贴与此问题相关的php / javascript位。
<tr id="add_dependents">
<td class="tim-dependents-table-cell">
<?php $data = array('class' => 'tim-dependents-table-contents', 'name' => 'dependent_names[]', 'id' => 'dependent_names_1', 'value' => $dep_names[0]);
echo form_input($data);
?>
</td>
<td>
<?php $data = array('class' => 'tim-dependents-table-contents', 'name' => 'dependent_ssns[]', 'id' => 'dependent_ssns_1', 'value' => $dep_ssns[0]);
echo form_input($data);
?>
</td>
<td>
<?php $data = array('class' => 'tim-dependents-table-contents', 'type' => 'date', 'name' => 'dependent_dobs[]', 'id' => 'dependent_dobs_1', 'value' => $dep_dobs[0]);
echo form_input($data);
?>
</td>
<td>
<a href="#" class="red"><i class="fa fa-trash"></i></a>
</td>
</tr>
然后,如果用户单击按钮,我将使用此功能创建更多字段:
if (typeof count === 'undefined') {
var count = 2;
}
function insertDependent() {
$("#add_dependents").after("<tr id='dependents_row_" + count + "'>" +
"<td><input type='text' id='dependent_names_" + count + "' name='dependent_names[]' /></td>" +
"<td><input type='text' id='dependent_ssns_" + count + "' name='dependent_ssns[]'/></td>" +
"<td><input type='date' id='dependent_dobs_" + count + "' name='dependent_dobs[]'/></td>" +
"<td><a href='#' onclick='deleteRow(" + count + ")' class='red'><i class='fa fa-trash'></i></a></td>" +
"</tr>");
count++;
}
该部分正在工作,并生成了看起来像我应该的字段。
然后是控制器中特别考虑这些字段的代码。不共享所有有效的代码,仅共享不起作用的部分
if(!empty($this->input->post('dependent_names'))) {
$data['dependent_names'] = $this->input->post('dependent_names');
$data['dependent_ssns'] = $this->input->post('dependent_ssns');
$data['dependent_dobs'] = $this->input->post('dependent_dobs');
}
问题出在控制器上之前,在页面上。提交页面的有效内容包括“永久”字段集,但javascript生成的字段中没有任何数据。
应该发生的情况是,通过javascript创建的字段应与“永久”字段集一样提交数据。
答案 0 :(得分:0)
好吧,我知道了。我以一些div元素在它之前打开和关闭之后的方式嵌套了open form标签。
换句话说,我有这个:
<div>
<form action="" etc>
</div>
</form>
我将表单标签在页面上移到更高的位置,
<form action="" etc>
<div>
</div>
</form>
除了javascript字段外,有趣的是整个事情都起作用了。我将删除PHP和codeigniter,因为这是一个直接的javascript问题,希望一些专家可以解释。
很高兴现在可以正常工作,但我仍然不知道更深层的“为什么”。
感谢尝试提供帮助的评论者。