diff --git a/sao/src/view/form.js b/sao/src/view/form.js index f465bebed5..d69fd05f2a 100644 --- a/sao/src/view/form.js +++ b/sao/src/view/form.js @@ -2278,14 +2278,22 @@ function eval_pyson(value){ Sao.common.selection_mixin.init_selection.call(this, key, this.set_selection.bind(this)); }, - update_selection: function(record, field, callbak) { + update_selection: function(record, field, callback) { + let deferred = jQuery.Deferred(); Sao.common.selection_mixin.update_selection.call(this, record, field, (selection, help) => { this.set_selection(selection, help); - if (callbak) { - callbak(selection, help); + let prm; + if (callback) { + prm = callback(selection, help); + } + if (prm) { + prm.always(deferred.resolve); + } else { + deferred.resolve(); } }); + return deferred; }, set_selection: function(selection, help) { var select = this.select; @@ -2299,9 +2307,13 @@ function eval_pyson(value){ } }, display_update_selection: function() { - var record = this.record; - var field = this.field; - this.update_selection(record, field, (selection, help) => { + let record = this.record, + field = this.field; + return this.update_selection(record, field, (selection, help) => { + if (record !== this.record) { + return; + } + if (!field) { this.select.val(''); return; @@ -2317,7 +2329,7 @@ function eval_pyson(value){ if (!found) { prm = Sao.common.selection_mixin.get_inactive_selection .call(this, value); - prm.done(inactive => { + prm = prm.then(inactive => { this.select.append(jQuery('