From 17fe9dfd5f3b64b33d4cba36568a3514f58df4b9 Mon Sep 17 00:00:00 2001 From: Eric Date: Fri, 15 Feb 2019 15:33:22 +0100 Subject: [PATCH] =?UTF-8?q?N=C2=B01906=20-=20Enhancement=20Request:=20Hand?= =?UTF-8?q?ling=20a=20lot=20of=20many=20to=20many=20relations=20in=20form?= =?UTF-8?q?=20element=20(edit=20mode)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- js/linkswidget.js | 43 +++++++++++++++++++++---------------------- 1 file changed, 21 insertions(+), 22 deletions(-) diff --git a/js/linkswidget.js b/js/linkswidget.js index 775feb6cf..fa2655f86 100644 --- a/js/linkswidget.js +++ b/js/linkswidget.js @@ -44,17 +44,7 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates, oWizH $('#dlg_'+me.id).remove(); }); - $('#linkedset_'+me.id+' :input').off('change').on('change', function() { - if (!($(this).hasClass('selection')) && !($(this).hasClass('select_all'))) { - var oCheckbox = $(this).closest('tr').find('.selection'); - var iLink = oCheckbox.attr('data-link-id'); - var iUniqueId = oCheckbox.attr('data-unique-id'); - var sAttCode = $(this).closest('.attribute-edit').attr('data-attcode'); - var value = $(this).val(); - return me.OnValueChange(iLink, iUniqueId, sAttCode, value); - } - return true; - }); + me.RegisterChange(); var oInput = $('#'+this.iInputId); oInput.bind('update_value', function() { $(this).val(me.GetUpdatedValue()); }); @@ -348,17 +338,7 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates, oWizH this.OnLinkAdded = function(iAddedId, iRemote) { this.AddLink(iAddedId, iRemote); - $('#linkedset_'+me.id+' :input').off('change').on('change', function() { - if (!($(this).hasClass('selection'))) { - var oCheckbox = $(this).closest('tr').find('.selection'); - var iLink = oCheckbox.attr('data-link-id'); - var iUniqueId = oCheckbox.attr('data-unique-id'); - var sAttCode = $(this).closest('.attribute-edit').attr('data-attcode'); - var value = $(this).val(); - return me.OnValueChange(iLink, iUniqueId, sAttCode, value); - } - return true; - }); + me.RegisterChange(); }; this.UpdateSizes = function(event, ui) @@ -435,6 +415,22 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates, oWizH return JSON.stringify(aValues); }; + this.RegisterChange = function() + { + // Listen only used inputs + $('#linkedset_'+me.id+' :input[name^="attr_'+me.sAttCode+'["]').off('change').on('change', function() { + if (!($(this).hasClass('selection'))) { + var oCheckbox = $(this).closest('tr').find('.selection'); + var iLink = oCheckbox.attr('data-link-id'); + var iUniqueId = oCheckbox.attr('data-unique-id'); + var sAttCode = $(this).closest('.attribute-edit').attr('data-attcode'); + var value = $(this).val(); + return me.OnValueChange(iLink, iUniqueId, sAttCode, value); + } + return true; + }); + }; + this.OnValueChange = function(iLink, iUniqueId, sAttCode, value) { var sFormPrefix = me.iInputId; @@ -476,5 +472,8 @@ function LinksWidget(id, sClass, sAttCode, iInputId, sSuffix, bDuplicates, oWizH }); var sToBeCreated = JSON.stringify(aToBeCreated); $('').val(sToBeCreated).appendTo(oDiv); + + // Remove unused inputs + $('#linkedset_'+me.id+' :input[name^="attr_'+me.sAttCode+'["]').prop("disabled", true); }; }