[FIX] close autocomplete listing on input
authorDenis Ledoux <dle@openerp.com>
Mon, 10 Feb 2014 14:00:32 +0000 (15:00 +0100)
committerDenis Ledoux <dle@openerp.com>
Mon, 10 Feb 2014 14:00:32 +0000 (15:00 +0100)
Closing previously occured on search request (so that a user wouldn't be able
to select "old" data on new search request), but ``search`` is only triggered
after the search delay. Worked when delay was 0, with it being moved to 250 a
user can get results matching the previous search instead of the current one.

Trigger a closing of the current results list on any ``input`` event, which is
when text is entered in any of the searchview's ``InputView``

bzr revid: dle@openerp.com-20140210140032-06dnlxepcc5ae21f

addons/web/static/src/js/search.js

index 3d7ba5a..ad212d7 100644 (file)
@@ -466,12 +466,9 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
      * Sets up search view's view-wide auto-completion widget
      */
     setup_global_completion: function () {
-        var self = this;
-
         var autocomplete = this.$el.autocomplete({
             source: this.proxy('complete_global_search'),
             select: this.proxy('select_completion'),
-            search: function () { self.$el.autocomplete('close'); },
             focus: function (e) { e.preventDefault(); },
             html: true,
             autoFocus: true,
@@ -479,6 +476,10 @@ instance.web.SearchView = instance.web.Widget.extend(/** @lends instance.web.Sea
             delay: 250,
         }).data('autocomplete');
 
+        this.$el.on('input', function () {
+            this.$el.autocomplete('close');
+        }.bind(this));
+
         // MonkeyPatch autocomplete instance
         _.extend(autocomplete, {
             _renderItem: function (ul, item) {