Newsgroup: it.comp.lang.javascript
Titolo: script per aggiungere più campi in un form

Sto costruendo un form in php per farmi inviare liste di ricerca per vinili
rari.
Il form parte con tre gruppi di campi per tre album.
Vorrei creare una funzione che aggiunga n nuovi campi secondo le necessità.
In php stavo creando un form per impostare il numero di gruppi di campi per
gli album. si scrive il numero e lo script php aggiunge il numero di campi
richiesto al from.
Il problema è che si perdono così gli eventuali campi già riempiti.
Quindi la soluzione sarebbe aggiungere nuovi campi con js, ma nn so come si
fa.
ecco il codice php per la creazione dinamica dei campi per n album:
<?php
$i = 3;
for ($n = 1; $n <= $i;  $n++) {
	echo "<fieldset class='form-album'>
		  <legend>album n°{$n}</legend>
		  <label>artista</label> <input type='text' name='artista-{$n}' /><br />
		  <label>titolo</label> <input type='text' name='titolo-{$n}' /><br />
		  <label>etichetta</label> <input type='text' name='etichetta-{$n}' /><br
/>
		  <label>anno</label> <input type='text' name='anno-{$n}' /><br />
		  <label>formato</label> <input type='text' name='formato-{$n}' /><br />
		  <label>stato</label> <input type='text' name='stato-{$n}' /><br />
		  </fieldset>";
}
?>
grazie per l'aiuto.
Arjuna
-- 
Homo sum, humani nihil a me alienum puto.
 20/04/2004 23.11.24

 Il problema è che si perdono così gli eventuali campi già riempiti.
I valori gia' inseriti si perdono se non te li porti dietro al momento del
submit.
Se te li porti dietro non si perdono.
Non ho molto presente cio' che vuoi fare, quindi puo' darsi che abbia
scritto delle panzanate.
Ciao,
Ema

 Ema
Arjuna
-- 
Gnotis se auton.
 21/04/2004 10.28.59

 Credevo che con js si potessero printare nuove parti di codice:
Questo non lo so. Bisognerebbe sentire qualcuno piu' esperto. Io non ho una
visione completa di cio' che si puo' fare con js.
Magari gia' utilizzando l' innerHtml puoi ottenere cio' che ti interessa:
ti crei al volo il codice html che vuoi visualizzare e lo assegni all'
innerHtml di qualche tag esistente.
O magari esistono dei metodi addElement che ti permetto di farlo, questo non
lo so; ma se cerchi forse trovi qualcosa in merito.
Se poi qualcuno che ne sa di + volesse intervenire...
Ciao,
Ema

Se poi qualcuno che ne sa di + volesse intervenire...
Questo funziona con Mozilla 1.5 e Opera 7.23 e IE 6.0, non garantisco
per altri browser:
<html>
<head>
<style type="text/css">
table{
 border:2px solid blue;
}
</style>
<script type="text/javascript">
function addform(){
 try{
 var mform=document.getElementById("t1");
 var i,mfs,mle,mla,minp,mbr,mtext=null;
 for(i=1;i<10;i++){
	mfs=document.createElement("fieldset");
	mle=document.createElement("legend");
	mtext=document.createTextNode("album "+i);
	mle.appendChild(mtext);
	mla=document.createElement("label");
	mtext=document.createTextNode("artista");
	mla.appendChild(mtext);
	minp=document.createElement("input");
	minp.setAttribute("type", "text");
	minp.setAttribute("name", "artista_"+i);
 
	mbr=document.createElement("br");
	mfs.appendChild(mle);
	mfs.appendChild(mla);
	mfs.appendChild(minp);
	mfs.appendChild(mbr);
	mform.appendChild(mfs);
 }
 } catch(e){ alert(e.message);}
}
</script>
</head>
<body>
<form id="t1">
 <fieldset>
  <legend>album n.0</legend>
  <label>artista</label><input type="text" name="artista_0"/><br/>
 </fieldset>
</form>
<a href="#" onclick="addform();return false;">aggiungi dati alla
form</a>
</body>
</html>
'bye