2016-07-21 2 views
0

Ich habe eine kurze Frage für euch hier. Ich bekam eine Reihe von Leadgenerierungsseiten und bat darum, sie in Gang zu bringen. Die Formulare sind großartig, erwarten Sie für ein kleines Problem ... Sie verwenden die unten stehende jQuery, um Benutzern zu ermöglichen, mehrere Instanzen eines Datensatzes zu übermitteln, indem Sie auf eine Schaltfläche "ein anderes Element hinzufügen" klicken. Das Problem ist, dass die duplizierten Artikel GENAU VERDOPPELT werden. Gleicher Name, ID, etc. Offensichtlich funktioniert dies nicht, wenn versucht wird, die Daten über PHP zu verarbeiten, da nur der erste Satz verwendet wird.Reparieren von jQuery plugin zum Verarbeiten von verschachtelten verschachtelten Feldern mit eindeutigen IDs

Ich lerne immer noch jQuery, also hoffte ich, dass jemand mich in die richtige Richtung für das Ändern des Plugins unten zeigen könnte, um jedem duplizierten Feld eine inkrementelle Ganzzahl am Ende der ID und des zugewiesenen Namens zuzuweisen. Die Felder in jedem Datensatz sind also Rolle, Beschreibung, Alter. Jeder zusätzliche Datensatz verwendet die ID & Namenssyntax von Feldname #, wobei # für Zahlen steht, die um 1 ansteigen.

Vielen Dank im Voraus für eine Beratung!

/** https://github.com/ReallyGood/jQuery.duplicate */ 
 
$.duplicate = function(){ 
 
    var body = $('body'); 
 
    body.off('duplicate'); 
 
    var templates = {}; 
 
    var settings = {}; 
 
    var init = function(){ 
 
    $('[data-duplicate]').each(function(){ 
 
     var name = $(this).data('duplicate'); 
 
     var template = $('<div>').html($(this).clone(true)).html(); 
 
     var options = {}; 
 
     var min = +$(this).data('duplicate-min'); 
 
     options.minimum = isNaN(min) ? 1 : min; 
 
     options.maximum = +$(this).data('duplicate-max') || Infinity; 
 
     options.parent = $(this).parent(); 
 

 
     settings[name] = options; 
 
     templates[name] = template; 
 
    }); 
 
    
 
    body.on('click.duplicate', '[data-duplicate-add]', add); 
 
    body.on('click.duplicate', '[data-duplicate-remove]', remove); 
 
    }; 
 
    
 
    function add(){ 
 
    var targetName = $(this).data('duplicate-add'); 
 
    var selector = $('[data-duplicate=' + targetName + ']'); 
 
    var target = $(selector).last(); 
 
    if(!target.length) target = $(settings[targetName].parent); 
 
    var newElement = $(templates[targetName]).clone(true); 
 
    
 
    if($(selector).length >= settings[targetName].maximum) { 
 
     $(this).trigger('duplicate.error'); 
 
     return; 
 
    } 
 
    target.after(newElement); 
 
    $(this).trigger('duplicate.add'); 
 
    } 
 
    
 
    function remove(){ 
 
    var targetName = $(this).data('duplicate-remove'); 
 
    var selector = '[data-duplicate=' + targetName + ']'; 
 
    var target = $(this).closest(selector); 
 
    if(!target.length) target = $(this).siblings(selector).eq(0); 
 
    if(!target.length) target = $(selector).last(); 
 
    
 
    if($(selector).length <= settings[targetName].minimum) { 
 
     $(this).trigger('duplicate.error'); 
 
     return; 
 
    } 
 
    target.remove(); 
 
    $(this).trigger('duplicate.remove'); 
 
    } 
 
    
 
    $(init); 
 
}; 
 

 
$.duplicate();

Antwort

0

[] bis zum Ende des NAME-Attribut des Eingabefeldes zum Beispiel so hinzufügen:

<input type ="text" name="name[]"

Auf diese Weise Ihre $POST['name'] wird ein Array von Strings halten. Für dieses Element. Es wird ein Array mit Schlüsseln sein, die Zahlen von 0 bis zu vielen Items enthalten.

Verwandte Themen