我有一个动态添加行的表单。有用。填写表单字段并单击提交按钮“检查正确性”后,将执行验证。如果数据有误,则需要正确。如果数据正确,我们会为生成的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'
));
}
有一些屏幕:
2.添加两行后。我想在页面刷新后仍然有这样的形式(3行和数据到其中):
3.页面刷新后,现在看起来如何:
你能帮助我吗?
答案 0 :(得分:0)
我同意Marc B.在从服务器返回页面之前,您必须将更改存储到表单中。一种选择是将其存储在临时文件或数据库中。我认为这样可行,但可能有点矫枉过正。我会尝试将它存储在$ _SESSION变量中,所以当服务器发送新表单时,它可以从特定的$ _SESSION变量中获取它(如果存在)。