From 2ea7dae91f3ce915fabd1cbd420ceb78685d242b Mon Sep 17 00:00:00 2001 From: Fabien Meghazi Date: Thu, 12 Jan 2012 16:15:27 +0100 Subject: [PATCH] [FIX] Fix default field focus that was broken bzr revid: fme@openerp.com-20120112151527-peee706mfv7nciye --- addons/web/static/src/js/view_form.js | 35 +++++++++++++++------------ 1 file changed, 20 insertions(+), 15 deletions(-) diff --git a/addons/web/static/src/js/view_form.js b/addons/web/static/src/js/view_form.js index 43f59233e48..5f2f587d669 100644 --- a/addons/web/static/src/js/view_form.js +++ b/addons/web/static/src/js/view_form.js @@ -1262,7 +1262,12 @@ openerp.web.form.Field = openerp.web.form.Widget.extend(/** @lends openerp.web.f validate: function() { this.invalid = false; }, - focus: function() { + focus: function($element) { + if ($element) { + setTimeout(function() { + $element.focus(); + }, 50); + } }, reset: function() { this.dirty = false; @@ -1309,8 +1314,8 @@ openerp.web.form.FieldChar = openerp.web.form.Field.extend({ this.invalid = true; } }, - focus: function() { - this.$element.find('input').focus(); + focus: function($element) { + this._super($element || this.$element.find('input:first')); } }); @@ -1434,8 +1439,8 @@ openerp.web.DateTimeWidget = openerp.web.Widget.extend({ } } }, - focus: function() { - this.$input.focus(); + focus: function($element) { + this._super($element || this.$input); }, parse_client: function(v) { return openerp.web.parse_value(v, {"widget": this.type_of_date}); @@ -1481,8 +1486,8 @@ openerp.web.form.FieldDatetime = openerp.web.form.Field.extend({ validate: function() { this.invalid = !this.datewidget.is_valid(this.required); }, - focus: function() { - this.datewidget.focus(); + focus: function($element) { + this._super($element || this.datewidget); } }); @@ -1525,8 +1530,8 @@ openerp.web.form.FieldText = openerp.web.form.Field.extend({ this.invalid = true; } }, - focus: function() { - this.$element.find('textarea').focus(); + focus: function($element) { + this._super($element || this.$element.find('textarea:first')); }, do_resize: function(max_height) { max_height = parseInt(max_height, 10); @@ -1572,8 +1577,8 @@ openerp.web.form.FieldBoolean = openerp.web.form.Field.extend({ this._super.apply(this, arguments); this.$element.find('input').prop('disabled', this.readonly); }, - focus: function() { - this.$element.find('input').focus(); + focus: function($element) { + this._super($element || this.$element.find('input:first')); } }); @@ -1659,8 +1664,8 @@ openerp.web.form.FieldSelection = openerp.web.form.Field.extend({ var value = this.values[this.$element.find('select')[0].selectedIndex]; this.invalid = !(value && !(this.required && value[0] === false)); }, - focus: function() { - this.$element.find('select').focus(); + focus: function($element) { + this._super($element || this.$element.find('select:first')); } }); @@ -2011,8 +2016,8 @@ openerp.web.form.FieldMany2One = openerp.web.form.Field.extend({ self.do_action(result.result); }); }, - focus: function () { - this.$input.focus(); + focus: function ($element) { + this._super($element || this.$input); }, update_dom: function() { this._super.apply(this, arguments);