diff --git a/js/property_field.js b/js/property_field.js index 28f2d4177..bf859b129 100644 --- a/js/property_field.js +++ b/js/property_field.js @@ -225,6 +225,7 @@ $(function() _do_submit: function() { var oData = {}; + var me = this; this.element.closest('form').find(':input[type=hidden]').each(function() { // Hidden form fields @@ -232,7 +233,7 @@ $(function() }); this.element.closest('form').find('.itop-property-field').each(function() { - var oWidget = $(this).data('itopProperty_field'); + var oWidget = me._get_widget($(this)); if (oWidget && oWidget._is_visible()) { var oVal = oWidget._get_committed_value(); @@ -264,6 +265,15 @@ $(function() { var oField = $('#'+this.options.field_id, this.element); oField.trigger('validate'); + }, + _get_widget: function(element) + { + var oWidget = element.property_field('instance'); + if (oWidget == undefined) + { + oWidget = element.selector_property_field('instance'); + } + return oWidget; } }); }); @@ -331,9 +341,12 @@ $(function() $('tr[data-path^="'+sSelector+'"]').each(function() { if($(this).is(':visible')) { - var oPropField = $(this).closest('.itop-property-field'); - oPropField.property_field('option', {can_apply: !me.bModified, parent_selector: '#'+me.element.attr('id') }); - oPropField.property_field('validate'); + var oWidget = me._get_widget($(this).closest('.itop-property-field')); + if (oWidget) + { + oWidget._setOptions({can_apply: !me.bModified, parent_selector: '#'+me.element.attr('id') }); + oWidget.validate(); + } } }); }, @@ -385,21 +398,21 @@ $(function() $('tr[data-path^="'+sSelector+'"]').each(function() { if($(this).is(':visible')) { - var sName = $(this).closest('.itop-property-field').property_field('mark_as_applied').property_field('get_field_name'); - if (typeof sName == 'string') + var oWidget = me._get_widget($(this).closest('.itop-property-field')); + if (oWidget) { - aUpdated.push(sName); + oWidget.mark_as_applied(); + sName = oWidget.get_field_name(); + if (typeof sName == 'string') + { + aUpdated.push(sName); + } } } }); this.element.closest('form').find('.itop-property-field').each(function() { - var oWidget = $(this).data('itopProperty_field'); - if (!oWidget) - { - // try the form selector widget - oWidget = $(this).data('itopSelector_property_field'); - } + var oWidget = me._get_widget($(this)); if (oWidget && oWidget._is_visible()) { var oVal = oWidget._get_committed_value(); @@ -426,12 +439,16 @@ $(function() sFormId = this.element.closest('form').attr('id'); oFormValidation[sFormId] = []; this.options.can_apply = true; - var sSelector = this.options.data_selector + var sSelector = this.options.data_selector; + var me = this; $('tr[data-path^="'+sSelector+'"]').each(function() { if($(this).is(':visible')) { - var oPropField = $(this).closest('.itop-property-field'); - oPropField.property_field('validate'); + var oWidget = me._get_widget($(this).closest('.itop-property-field')); + if (oWidget) + { + oWidget.validate(); + } } }); this.options.can_apply = (oFormValidation[sFormId].length == 0); // apply allowed only if no error