我已经处理过类似的事情。有几个选项可以想到。
既然你有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生成HTML代同样的东西来自PHP。只要JS方面足够聪明,可以识别PHP添加的最初字段,就可以使用最容易实现的方式。就个人而言,我只是扩展你的JS代码来处理可选的数据,如上图所示。