Lo del textarea es una buena solución, el problema esta del lado del cliente, y que entienda que el salto de linea separa hijos, se que es algo tal vez tonto, pero tienes que ponerte en los zapatos de el.
Una buena opcion, es a travez de un text input, y con el evento onchange se se llene una lista, ergo borras el valor del text input algo así
Código Javascript
:
Ver originalfunction fillSonsList(list, fill, name){
var filler = document.getElementById(fill);
var val = filler.value;
filler.value = "";
var input = document.createElement("input");
input.setAttribute("type", "text"); //text type input to see value
input.setAttribute("value", val); //value of input
input.setAttribute("readonly", ""); //disable input to changes
input.setAttribute("name", name+"[]"); //set array of inputs
input.setAttribute("class", "some-class"); //to add styles i guess?
document.getElementById(list).appendChild(input);
}
Parametros:
list: el elemento html a llenar
fill: el input con que llenas la lista
name: el nombre que le darás al input para que sea enviado a php
Ejemplo
Código HTML:
Ver original<input type="text" onchange="fillSonsList('sons-list', this.id, 'sons');" />
Cual es el chiste de esto?
Que en esta línea
Código Javascript
:
Ver originalinput.setAttribute("name", name+"[]"); //set array of inputs
Se va agregando inputs así
Y en php obtienes un arreglo de esos foo
Código RETURN:
Ver original["foo"] => array(N) { [0]=> "var1" [1]=> "var2" [2]=> "var3", ... , [N-1]=> "varN-1" [N]=> "varN" }
Saludos
P.S: faltaría un botoncito para eliminar un hijo si es mal escrito, pero eso sería tarea para ti
si es que te gusta mi propuesta