Hola,
llevo un par de días peleándome con mi JS para conseguir que funcione lo que tengo en mente.
Se trata de un formulario dinámico con una lista de colores en el que al pulsar el botón "añadir color" llama a la función Add(), la cual inserta una nueva fila en un fieldset con los inputs correspondientes.
El problema es que al usar fieldtext.innerHTML += html de los nuevos inputs, coge el html original y no los valores actuales, por lo que hay que volver a introducir los valores anteriores.
La función Add viene a ser lo siguiente:
function Add(){
var n = getMax();
var txt ="";
txt += '<div class="form-group">';
txt += ' <label class="col-sm-2 control-label">Color #'+n+'</label>';
txt += ' <div class="col-sm-2">';
txt += ' <input class="form-control" type="color" name="color'+n+'" id="colorFondo'+n+'" value="#000000" onchange="cargaDatos()" />';
txt += ' </div>';
txt += ' <div class="col-sm-6">';
txt += ' <input class="form-control" type="range" min="1" max="100" step="1" value="50" name="rangeColor'+n+'" id="rangeColor'+n+'" onchange="cambiaRange(\'range\', \'Color'+n+'\')" />';
txt += ' </div>';
txt += ' <div class="col-sm-1">';
txt += ' <input class="form-control" type="number" min="1" max="100" value="50" name="numberRangeColor'+n+'" id="numberRangeColor'+n+'" onchange="cambiaRange(\'number\', \'Color'+n+'\')" />';
txt += ' </div>';
txt += '</div>';
document.getElementById("field").innerHTML += text;
}
*las funciones cambiaRange y cargaDatos son meras funciones para interactuar con los valores.
Si no hay ninguna solución, tengo pensando tirar por crear dinámicamente cada uno de los divs e inputs e ir metiéndolos donde corresponda con .appendChild(), aunque no se si eso sería viable al haber tantas funciones y valores dentro de cada elemento.
Muchas gracias