ok
Direktori : /home2/selectio/www/wedding-info/html/assets/plugins/form-repeater/ |
Current File : /home2/selectio/www/wedding-info/html/assets/plugins/form-repeater/repeater.js |
jQuery.fn.extend({ createRepeater: function (options = {}) { var hasOption = function (optionKey) { return options.hasOwnProperty(optionKey); }; var option = function (optionKey) { return options[optionKey]; }; var generateId = function (string) { return string .replace(/\[/g, '_') .replace(/\]/g, '') .toLowerCase(); }; var addItem = function (items, key, fresh = true) { var itemContent = items; var group = itemContent.data("group"); var item = itemContent; var input = item.find('input,select,textarea'); input.each(function (index, el) { var attrName = $(el).data('name'); var skipName = $(el).data('skip-name'); if (skipName != true) { $(el).attr("name", group + "[" + key + "]" + "[" + attrName + "]"); } else { if (attrName != 'undefined') { $(el).attr("name", attrName); } } if (fresh == true) { $(el).attr('value', ''); } $(el).attr('id', generateId($(el).attr('name'))); $(el).parent().find('label').attr('for', generateId($(el).attr('name'))); }) var itemClone = items; /* Handling remove btn */ var removeButton = itemClone.find('.remove-btn'); if (key == 0) { removeButton.attr('disabled', true); } else { removeButton.attr('disabled', false); } removeButton.attr('onclick', '$(this).parents(\'.items\').remove()'); var newItem = $("<div class='items'>" + itemClone.html() + "<div/>"); newItem.attr('data-index', key) newItem.appendTo(repeater); }; /* find elements */ var repeater = this; var items = repeater.find(".items"); var key = 0; var addButton = repeater.find('.repeater-add-btn'); items.each(function (index, item) { items.remove(); if (hasOption('showFirstItemToDefault') && option('showFirstItemToDefault') == true) { addItem($(item), key); key++; } else { if (items.length > 1) { addItem($(item), key); key++; } } }); /* handle click and add items */ addButton.on("click", function () { addItem($(items[0]), key); key++; }); } });