在PHP和JavaScript中保存动态添加的行

时间:2014-10-29 14:15:26

标签: javascript php jquery forms rows

我有一个动态添加行的表单。有用。填写表单字段并单击提交按钮“检查正确性”后,将执行验证。如果数据有误,则需要正确。如果数据正确,我们会为生成的PDF文件获得一个新的提交按钮“生成pdf”。数据验证后,用户输入的数据仍应可见。它也适用于我的形式。

问题是当我添加一些行时。在填写并单击提交“检查正确性”后,新添加的行将随其数据一起消失。有人知道如何在验证后保存这些行吗?

这是我动态添加字段的HTML代码:

    $oForm->formHTML('<div class="add_btn_block" style="margin-left:200px;"><div class="row_add_btn add_row">title</div></div>');
       $oForm->formHTML(addRows2());

   function addRows(){
        $personsArray = $_POST['persons'];
        $html = '
        <table id="template2" style="display:none; ">
            <tr id="row_{0}">
                <td><input type="text" name="persons[]"></td>
                <td><img src="/../_img/row_del.png" id="delete_{0}" alt="usun"></td>
            </tr>
        </table>
        <table id="list2">
            <thead >
                <tr>
                    <th></th>
                    <th></th>
                </tr>
            </thead>

            <tbody>
               <tr>
                    <td><input type="text" name="persons[]" value="'.$personsArray[1].'"></td>
                    <td></td>
               </tr>

                <tr>
                    <td colspan="2" id="app_here2"></td>
                </tr>
            </tbody>
        </table>';
            return $html;
    }

这是JavaScript代码。

<script>
        $(document).ready(function(){
            var i = 2;
            var rowTemplate2 = jQuery.format($("#template2").html());

            function addRow(){
                var ii = i++;
                $("#app_here2").append(rowTemplate2(ii));
                $("#delete_" + ii).click(function(){
                    $("#row_" + ii).remove();
                });
            }
            $(".add_row").click(addRow);
        });
</script>

这是一些PHP:

if($_POST["ACT"] == NULL){
    $oForm->formInput(array(
        'type'=>'hidden',
        'name'=>'ACT',
    ));

    $oForm->formInput(array(
        'id' =>'counter',
        'type'=>'hidden',
        'name'=>'counter',
        'value'=>0));

    $oForm->formSubmit(array(
        'name' => 'sprawdzPoprawnosc',
        'value' => 'check correctness'
    ));
}

有一些屏幕:

  1. 单行: 1 enter image description here
  2. 2.添加两行后。我想在页面刷新后仍然有这样的形式(3行和数据到其中): enter image description here

    3.页面刷新后,现在看起来如何: enter image description here

    你能帮助我吗?

1 个答案:

答案 0 :(得分:0)

我同意Marc B.在从服务器返回页面之前,您必须将更改存储到表单中。一种选择是将其存储在临时文件或数据库中。我认为这样可行,但可能有点矫枉过正。我会尝试将它存储在$ _SESSION变量中,所以当服务器发送新表单时,它可以从特定的$ _SESSION变量中获取它(如果存在)。