diff --git a/addons/web/static/src/js/fields/basic_fields.js b/addons/web/static/src/js/fields/basic_fields.js index 79654cc3095..103509a7b53 100644 --- a/addons/web/static/src/js/fields/basic_fields.js +++ b/addons/web/static/src/js/fields/basic_fields.js @@ -828,7 +828,7 @@ var FieldEmail = InputField.extend({ * @override */ getFocusableElement: function () { - return this.mode === 'readonly' && this.$el || $(); + return this.mode === 'readonly' ? this.$el : this._super.apply(this, arguments); }, //-------------------------------------------------------------------------- @@ -940,7 +940,7 @@ var UrlWidget = InputField.extend({ * @override */ getFocusableElement: function () { - return this.mode === 'readonly' && this.$el || $(); + return this.mode === 'readonly' ? this.$el : this._super.apply(this, arguments); }, //-------------------------------------------------------------------------- diff --git a/addons/web/static/tests/views/form_tests.js b/addons/web/static/tests/views/form_tests.js index c898618e315..9824c913960 100644 --- a/addons/web/static/tests/views/form_tests.js +++ b/addons/web/static/tests/views/form_tests.js @@ -3244,7 +3244,7 @@ QUnit.module('Views', { }); QUnit.test('navigation with tab key in form view', function (assert) { - assert.expect(2); + assert.expect(3); var form = createView({ View: FormView, @@ -3253,8 +3253,9 @@ QUnit.module('Views', { arch: '
' + '' + '' + - '' + + '' + '' + + '' + '' + '' + '
', @@ -3266,12 +3267,18 @@ QUnit.module('Views', { // focus first input, trigger tab form.$('input[name="foo"]').focus(); + form.$('input[name="foo"]').trigger($.Event('keydown', {which: $.ui.keyCode.TAB})); assert.ok($.contains(form.$('div[name="bar"]')[0], document.activeElement), "bar checkbox should be focused"); + form.$('div[name="bar"]').trigger($.Event('keydown', {which: $.ui.keyCode.TAB})); + assert.strictEqual(form.$('input[name="display_name"]')[0], document.activeElement, + "display_name should be focused"); + // simulate shift+tab on active element $(document.activeElement).trigger($.Event('keydown', {which: $.ui.keyCode.TAB, shiftKey: true})); + $(document.activeElement).trigger($.Event('keydown', {which: $.ui.keyCode.TAB, shiftKey: true})); assert.strictEqual(document.activeElement, form.$('input[name="foo"]')[0], "first input should be focused");