diff --git a/media/com_fabrik/js/element.js b/media/com_fabrik/js/element.js index 02dbbd25c70..0025223dc11 100644 --- a/media/com_fabrik/js/element.js +++ b/media/com_fabrik/js/element.js @@ -271,6 +271,22 @@ define(['jquery'], function (jQuery) { this.addNewEvent(action, js); }, + /** + * Run unload events if repeat group row is being deleted + */ + runUnloadEvents: function () { + var events = this.events['unload']; + if (events) { + for (var i = 0; i < events.length; i++) { + try { + eval(js[i]); + } catch (error) { + fconsole('Error in', this.element.id , 'unload event javascript:', error.name, '-', error.message, "\r\n", js[i]); + } + } + } + }, + validate: function () { }, diff --git a/media/com_fabrik/js/form.js b/media/com_fabrik/js/form.js index 2c4e1f872c2..c4d5f867cd8 100644 --- a/media/com_fabrik/js/form.js +++ b/media/com_fabrik/js/form.js @@ -1970,6 +1970,15 @@ define(['jquery', 'fab/encoder', 'fab/fabrik', 'lib/debounce/jquery.ba-throttle- this.setRepeatButtons(group, i); Fabrik.fireEvent('fabrik.form.group.delete.end', [this, e, i, delIndex]); } else { + + // Run unload events on each element being deleted + subGroup.getElements('.fabrikinput').each(function (dom,i,els) { + var object = this.getElementObject(els[i].id); + if (object) { + object.runUnloadEvents(); + } + }.bind(this)); + var toel = subGroup.getPrevious(); /* var myFx = new Fx.Tween(subGroup, { @@ -2034,6 +2043,16 @@ define(['jquery', 'fab/encoder', 'fab/fabrik', 'lib/debounce/jquery.ba-throttle- this.setRepeatButtons(group, i); }, + getElementObject: function(el) { + for (form in Fabrik.blocks) { + var elements = Fabrik.blocks[form].elements; + if (elements.hasOwnProperty(el)) { + return elements[el]; + } + } + return null; + }, + hideLastGroup: function (groupId, subGroup) { var sge = subGroup.getElement('.fabrikSubGroupElements'); var notice = new Element(