我过去处理过类似的事情。我想到了几个选项。
既然您有 JS 代码可以在单击按钮时生成新字段,为什么不扩展该 JS 函数以便也可以通过传递一些参数来调用它。如果有参数,它将使用现有数据填充字段。
然后,如果由于错误而重新显示表单,或者从 PHP 进行编辑,则将一些信息传递给 Javascript,以便在页面加载时创建字段并用数据填充它们。
为了说明,我假设你有这样的东西:
<a href="#" onclick="addNewFormField(); return false">Add Another Child</a>
你有这个功能:
function addNewFormField() {
// create new HTML element to contain the field
// create new input, append to element container
// add container to DOM
}
改变它,使它像这样:
function addNewFormField(data) {
// create new HTML element to contain the field
// create new input, append to element container
// add container to DOM
if (data != undefined) {
newFormElement.value = data.value;
newContainerElement.class = 'error';
}
}
在 PHP 中,添加一些运行 onload 的代码:
<script type="text/javascript">
window.onload = function() { // replace me with jQuery ready() or something proper
<?php foreach($childInList as $child): ?>
addNewFormField({ value: '<?php echo $child['name'] ?>' });
<?php endforeach; ?>
}
</script>
希望对您有所帮助,这是一个高级示例,但不知道您的表单是如何工作的,但我过去曾使用过类似的方法来使用来自服务器端的数据重新填充 JS 创建的字段。
编辑:您可以使用的另一种方法是在 PHP 端创建 HTML 元素并从那里预填充它们,但这可能会导致重复代码、从 JS 生成 HTML 和从 PHP 生成相同内容的 HTML。只要 JS 端足够聪明,可以识别 PHP 添加的初始字段,您就可以使用最容易实现的任何内容。就个人而言,我只是扩展您的 JS 代码来处理可选数据,如上图所示。