我已經處理過類似的事情。有幾個選項可以想到。
既然你有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代碼來處理可選的數據,如上圖所示。