Ho creato questo modulo che consente di creare più istanze di una "cosa" ... Fondamentalmente i campi necessari per la "cosa" sono tutti racchiusi all'interno di una sezione. Quando l'utente fa clic su un pulsante "aggiungi altro", utilizzo il clone di Jquery per copiare l'ultimo elemento della sezione della serie e lo inserisce prima del pulsante "aggiungi altro". Ho cancellato tutti i campi nella nuova sezione con alcuni Jquery.Elementi di clonaggio Jquery: problemi di ritenzione dei pulsanti di scelta controllati
La cosa su questo modulo che ho creato è che puoi compilare le informazioni nei campi di qualsiasi sezione, ma quando decidi che non vuoi più una sezione specifica, puoi semplicemente cancellarla. Poi ho uno script che passerà attraverso le restanti sezioni, ri-numerando tutti gli attributi e gli elementi degli elementi, in modo che tutto sia numerato in modo appropriato (più facile elaborare il modulo con PHP dopo l'invio) e le informazioni rimanenti che hai inserito verrà comunque mantenuto, anche dopo il ri-numerazione di elementi e attributi.
Ecco una penna: http://codepen.io/JonnyNineToes/pen/AgEax
codice obbligatorio:
// when the user clicks the "add more" button...
$('.add_btn').click(function(){
// clone the previous element (a "repeatable" element), and insert it before the "add more" button
$(this).prev('.repeatable').clone().insertBefore(this).html();
// get the number of repeatable elements on the page
var num = $('.repeatable').length;
// again, get the previous element (a "repeatable" element), and change the header to reflect it's new index
$(this).prev('.repeatable').children('h2').html('Person ' + num);
// now, go through all text boxes within the last "repeatable" element...
$('.repeatable').last().find('input').each(function(){
// ...change their "structure" data attributes to reflect the index+1 value of the "repeatable" element
dattr = $(this).data('structure') + num;
$(this).attr({
'id':dattr,
'name':dattr
// update the "for" attribute on the parent element (label)
}).parent('label').attr('for',dattr);
// clear the input field contents of the new "repeatable"
// if the type of the input is "radio"...
if ($(this).attr('type') == 'radio') {
// remove the checked attribute
/*$(this).removeAttr('checked');*/
// for all other inputs...
} else {
// clear the value...
$(this).val('');
}
});
// run the "destroy" method... I forget why... just do it, and don't gimme no lip.
destroy();
updateRemoveLinks();
});
Il problema che sto avendo è con pulsanti di opzione. Se clicco su uno dei pulsanti di opzione nell'ultima sezione e poi clicco su "aggiungi altro" per aggiungere un'altra sezione dopo di essa, i pulsanti radio si svuotano (nessuno selezionato) nella sezione che viene clonata, e invece vengono copiati nella nuova sezione . Prova la penna ... fai clic su uno dei pulsanti di opzione nella sezione, quindi fai clic su "aggiungi altro". Vedrai cosa intendo.
Non riesco davvero a capire cosa ho fatto di sbagliato qui che lo fa ... O se c'è qualcosa che sto dimenticando o che ho dimenticato?
Oh, tu sei l'uomo! Ci sono rimasto perplesso per alcuni giorni. Grazie mille! – IAmBob
Accettare la risposta sarebbe bello :) – vcanales
Il mio male. Ho provato a svenderlo prima e ho ricevuto un messaggio che diceva che non potevo, a meno che non avessi "ottenuto più punti" o qualcosa del genere. Alla fine ho capito, però. Speriamo che lo risolva. Grazie ancora per il vostro aiuto. – IAmBob