sucede que los campos no tienen un valor predeterminado. de modo que cuando usas innerHTML este toma la fuente original y la vuelve a escribir en el documento. o sea, lo que el usuario escribe no queda grabado en el atributo
value. para comprobarlo, intenta tomar el valor con el metodo
getAttribute("value"), veras que te devuelve un string vacio independientemente lo que el usuario escribio. la solucion es simplemente usar metodos del DOM para crear los elementos en lugar de innerHTML.
Código:
<script language="javascript">
$nummaxrooms=1;
fields = 0;
function addInput() {
if (fields < 5){
var target = document.getElementById('text');
var p = document.createElement("p");
p.appendChild(setText("Room type name: "));
p.appendChild(setInput("text", "roomtypename"+fields, "style10"));
p.appendChild(setText("Quantity: "));
p.appendChild(setInput("text", "roomqty"+fields, "style10"));
p.appendChild(setText("Rack Price us$: "));
p.appendChild(setInput("text", "roomrackprice"+fields, "style10"));
target.appendChild(p);
fields++;
}else{
alert("Sólo se pueden 5 registros.");
document.form.add.disabled=true;return;
}
function setText(text){
return document.createTextNode(text);
}
function setInput(type, name, classname){
var input = document.createElement("input");
input.setAttribute("type", type);
input.setAttribute("name", name);
input.className = classname;
return input;
}
}
</script>
<input type="button" onclick="addInput()" name="add" value="(+) Aumenta un campo de texto" />
<p id="text"></p>