diff --git a/addons/base/static/src/js/m2o.js b/addons/base/static/src/js/m2o.js index 02fe536db89..b20eab0689e 100644 --- a/addons/base/static/src/js/m2o.js +++ b/addons/base/static/src/js/m2o.js @@ -15,6 +15,7 @@ openerp.base.m2o = function(openerp){ var self = this var $input = this.element.autocomplete({ + source: function(request, response){ var search_val = request.term; if (search_val in cache) { @@ -25,7 +26,6 @@ openerp.base.m2o = function(openerp){ lastXhr = self.dataset.name_search(search_val, function(obj, status, xhr){ var result = obj.result var values = []; - if (!result.length) { values.push({'value': 'Create...', id: 'create'}) } @@ -33,7 +33,8 @@ openerp.base.m2o = function(openerp){ $.each(result, function(i, val){ values.push({ value: val[1], - id: val[0] + id: val[0], + orig_val: val[1] }); self.result_ids.push(result[i][0]) }); @@ -50,7 +51,7 @@ openerp.base.m2o = function(openerp){ }, select: function(event, ui){ - + ui.item.value = ui.item.orig_val? ui.item.orig_val : self.element.data( "autocomplete" ).term if (ui.item.id == 'more') { self.dataset.ids = self.result_ids; self.dataset.count = self.dataset.ids.length; @@ -62,9 +63,8 @@ openerp.base.m2o = function(openerp){ } if (ui.item.id == 'create') { - var val = self.element.val() - self.dataset.create({'name': self.element.val()}, + self.dataset.create({'name': ui.item.value}, function(r){}, function(r){ var element_id = _.uniqueId("act_window_dialog"); var dialog = jQuery('
', @@ -76,16 +76,22 @@ openerp.base.m2o = function(openerp){ self.element.val('') var event_form = new openerp.base.FormView(self.view_manager, self.session, element_id, self.dataset, false); event_form.start(); - return true; }); - console.log(id_2.result,'56576777878787878',val, self.element.data( "autocomplete" ).term) - console.log(this) - $( this ).val( "" ); - self.element.val(self.element.data( "autocomplete" ).term); + $input.val(self.element.data( "autocomplete" ).term); + return true; } self.element.attr('m2o_id', ui.item.id); }, - minLength: 0 + + minLength: 0, + + focus: function(event, ui) { + if (ui.item.id == ('create')) { + return true; + } + ui.item.value = self.element.data("autocomplete").term.length ? self.element.val() + '[' + ui.item.orig_val.substring(self.element.data("autocomplete").term.length) + ']' : this.lastSearch + }, + }); $("
 
")