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();