diff --git a/addons/web/static/src/js/fields/relational_fields.js b/addons/web/static/src/js/fields/relational_fields.js index c68ac1bd64c..12a249ce605 100644 --- a/addons/web/static/src/js/fields/relational_fields.js +++ b/addons/web/static/src/js/fields/relational_fields.js @@ -770,7 +770,7 @@ var FieldMany2One = AbstractField.extend({ } const firstValue = this.suggestions.find(s => s.id); if (firstValue) { - this.reinitialize(firstValue.id); + this.reinitialize({ id: firstValue.id, display_name: firstValue.name }); } else if (this.can_create) { new M2ODialog(this, this.string, this.$input.val()).open(); } diff --git a/addons/web/static/tests/fields/relational_fields_tests.js b/addons/web/static/tests/fields/relational_fields_tests.js index cf09b08dd45..737e48f76e3 100644 --- a/addons/web/static/tests/fields/relational_fields_tests.js +++ b/addons/web/static/tests/fields/relational_fields_tests.js @@ -2036,6 +2036,30 @@ QUnit.module('relational_fields', { form.destroy(); }); + QUnit.test("select a many2many value by focusing out", async function (assert) { + assert.expect(4); + + const form = await createView({ + View: FormView, + model: 'partner', + data: this.data, + arch: `
`, + }); + + assert.containsNone(form, '.o_field_many2manytags .badge'); + + form.$('.o_field_many2manytags input').focus().val('go').trigger('input').trigger('keyup'); + await testUtils.nextTick(); + form.$('.o_field_many2manytags input').trigger('blur'); + await testUtils.nextTick(); + + assert.containsNone(document.body, '.modal'); + assert.containsOnce(form, '.o_field_many2manytags .badge'); + assert.strictEqual(form.$('.o_field_many2manytags .badge').text().trim(), 'gold'); + + form.destroy(); + }); + QUnit.module('FieldRadio'); QUnit.test('fieldradio widget on a many2one in a new record', async function (assert) {