diff --git a/addons/web/static/src/js/views/basic/basic_model.js b/addons/web/static/src/js/views/basic/basic_model.js index 8ae01e87bbc..7d33d51257f 100644 --- a/addons/web/static/src/js/views/basic/basic_model.js +++ b/addons/web/static/src/js/views/basic/basic_model.js @@ -1239,8 +1239,8 @@ var BasicModel = AbstractModel.extend({ var field = record.fields[name]; specs[name] = (field.onChange) || ""; _.each(field.views, function (view) { - _.each(view.fields, function (field, subname) { - specs[name + '.' + subname] = (field.onChange) || ""; + _.each(view.fieldAttrs, function (field, subname) { + specs[name + '.' + subname] = (view.fields[subname].onChange) || ""; }); }); }); diff --git a/addons/web/static/src/js/views/form/form_view.js b/addons/web/static/src/js/views/form/form_view.js index 3f397f64d9a..6578c7ada15 100644 --- a/addons/web/static/src/js/views/form/form_view.js +++ b/addons/web/static/src/js/views/form/form_view.js @@ -89,6 +89,7 @@ var FormView = BasicView.extend({ field.views[viewName === 'list' ? 'tree' : viewName] = view; field.relatedFields = fieldView.view_fields; field.fieldAttrs = fieldView.fieldAttrs; + view.fieldAttrs = fieldView.fieldAttrs; } })); } diff --git a/addons/web/static/test/views/form_tests.js b/addons/web/static/test/views/form_tests.js index 8096982d3f7..80c60c4bc20 100644 --- a/addons/web/static/test/views/form_tests.js +++ b/addons/web/static/test/views/form_tests.js @@ -736,6 +736,47 @@ QUnit.module('Views', { form.destroy(); }); + QUnit.test('onchange send only the present fields to the server', function (assert) { + assert.expect(1); + this.data.partner.records[0].product_id = false; + this.data.partner.onchanges.foo = function (obj) { + obj.foo = obj.foo + " alligator"; + }; + + var form = createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: '
', + archs: { + "partner_type,false,list": '