69 lines
1.8 KiB
JavaScript
69 lines
1.8 KiB
JavaScript
(function ($) {
|
|
$.fn.appender = function (settings) {
|
|
let appendArea = this;
|
|
let rowHtml = $(settings.rowSection)[0].outerHTML;
|
|
|
|
settings.hideSection ? $(settings.rowSection).remove() : "";
|
|
|
|
let rowCounter = 1;
|
|
|
|
if (settings.rowNumberStart) {
|
|
rowCounter = Number(settings.rowNumberStart);
|
|
}
|
|
|
|
$(document).on('click', settings.addBtn, function (event) {
|
|
$(appendArea).append(rowHtml);
|
|
|
|
if (settings.appendEffect === 'fade') {
|
|
$(settings.rowSection).last().hide().fadeIn();
|
|
} else if (settings.appendEffect === 'slide') {
|
|
$(settings.rowSection).last().hide().slideDown(200);
|
|
}
|
|
|
|
$(settings.rowSection).last().addClass(settings.addClass);
|
|
|
|
$(settings.rowNumber).last().text(rowCounter);
|
|
|
|
type = (settings.type) ? settings.type : settings.rowSection;
|
|
|
|
$(type).each(function(rowIndex) {
|
|
$(this).find('input[name]').each(function() {
|
|
var name = $(this).attr('name');
|
|
name = name.replace(/\[[0-9]?\]$/, '['+rowIndex+']');
|
|
$(this).attr('name',name);
|
|
});
|
|
$(this).find('select[name]').each(function() {
|
|
var name = $(this).attr('name');
|
|
name = name.replace(/\[[0-9]?\]$/, '['+rowIndex+']');
|
|
$(this).attr('name',name);
|
|
});
|
|
$(this).find('textarea[name]').each(function() {
|
|
var name = $(this).attr('name');
|
|
name = name.replace(/\[[0-9]?\]$/, '['+rowIndex+']');
|
|
$(this).attr('name',name);
|
|
});
|
|
$(this).find('.appender').each(function() {
|
|
$(this).data('id',rowIndex);
|
|
});
|
|
});
|
|
|
|
rowCounter++;
|
|
|
|
if (settings.callback) {
|
|
settings.callback();
|
|
}
|
|
|
|
});
|
|
|
|
|
|
if (settings.deleteBtn) {
|
|
$(document).on('click', settings.deleteBtn, function (e) {
|
|
$(e.target).closest(settings.rowSection).remove();
|
|
if (settings.callback) {
|
|
settings.callback();
|
|
}
|
|
})
|
|
}
|
|
};
|
|
|
|
}(jQuery)); |