Ho un'applicazione Web, costituita principalmente da un grande modulo con informazioni. Il modulo è suddiviso in più schede, per renderlo più leggibile per l'utente:Il modo migliore per aggiungere un modulo aggiuntivo (nidificato) nel mezzo di un modulo a schede
<form>
<div id="tabs">
<ul>
<li><a href="#tab1">Tab1</a></li>
<li><a href="#tab2">Tab2</a></li>
</ul>
<div id="tab1">A big table with a lot of input rows</div>
<div id="tab2">A big table with a lot of input rows</div>
</div>
</form>
Il modulo viene dinamicamente esteso (righe in più vengono aggiunti alle tabelle). Ogni 10 secondi il modulo viene serializzato e sincronizzato con il server.
Ora desidero aggiungere un modulo interattivo su una delle schede: quando un utente immette un nome in un campo, questa informazione viene inviata al server e viene restituito un ID associato a tale nome. Questo ID viene utilizzato come identificatore per alcuni campi modulo aggiunti dinamicamente.
Un rapido SketchUp di tale pagina sarebbe simile a questa:
<form action="bigform.php">
<div id="tabs">
<ul>
<li><a href="#tab1">Tab1</a></li>
<li><a href="#tab2">Tab2</a></li>
</ul>
<div id="tab1">A big table with a lot of input rows</div>
<div id="tab2">
<div class="associatedinfo">
<p>Information for Joe</p>
<ul>
<li><input name="associated[26][]" /></li>
<li><input name="associated[26][]" /></li>
</ul>
</div>
<div class="associatedinfo">
<p>Information for Jill</p>
<ul>
<li><input name="associated[12][]" /></li>
<li><input name="associated[12][]" /></li>
</ul>
</div>
<div id="newperson">
<form action="newform.php">
<p>Add another person:</p>
<input name="extra" /><input type="submit" value="Add" />
</form>
</div>
</div>
</div>
</form>
È possibile che questo non funziona: forme nidificati non sono ammessi in HTML. Tuttavia, ho davvero bisogno di visualizzare il modulo in quella scheda: fa parte della funzionalità di quella pagina. Voglio anche il comportamento di un modulo separato: quando l'utente raggiunge il ritorno nel campo modulo, viene premuto il pulsante di invio "Aggiungi" e viene attivata un'azione di invio sul modulo parziale.
Qual è il modo migliore per risolvere questo problema?
utilizza una forma grande con più pulsanti. ogni pulsante può avere un valore diverso, ovvero il modo in cui il codice back-end può indicare quale pulsante è stato effettivamente inviato per inviare il modulo. il tuo codice di back end può quindi fare cose diverse a seconda del pulsante che è stato premuto. oppure puoi anche fare in modo che il pulsante "sotto forma" chiami AJAX invece di inviare il modulo, che ti consente di interrogare il server e ottenere una risposta senza aggiornare la pagina. è quindi possibile utilizzare javascript per utilizzare la risposta alla query AJAX per creare i campi modulo aggiuntivi. – dqhendricks