通过javascript添加的表单字段不会传递数据

时间:2019-04-24 20:27:40

标签: javascript

找不到这样的问题,我有一个包含一组字段的表单,如果用户单击按钮,则会添加更多字段。我将这些字段与第一个字段相同,并为所有字段集使用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创建的字段应与“永久”字段集一样提交数据。

1 个答案:

答案 0 :(得分:0)

好吧,我知道了。我以一些div元素在它之前打开和关闭之后的方式嵌套了open form标签。

换句话说,我有这个:

<div>

    <form action="" etc>

</div>

    </form>

我将表单标签在页面上移到更高的位置,

<form action="" etc>

    <div>

    </div>

</form>

除了javascript字段外,有趣的是整个事情都起作用了。我将删除PHP和codeigniter,因为这是一个直接的javascript问题,希望一些专家可以解释。

很高兴现在可以正常工作,但我仍然不知道更深层的“为什么”。

感谢尝试提供帮助的评论者。