diff options
Diffstat (limited to 'awesomplete.js')
-rw-r--r-- | awesomplete.js | 28 |
1 files changed, 18 insertions, 10 deletions
diff --git a/awesomplete.js b/awesomplete.js index 82c18a5..442bfd1 100644 --- a/awesomplete.js +++ b/awesomplete.js @@ -64,16 +64,20 @@ var _ = self.Awesomplete = function (input, o) { "keydown": function(evt) { var c = evt.keyCode; - if (c === 13 && me.selected) { // Enter - evt.preventDefault(); - me.select(); - } - else if (c === 27) { // Esc - me.close(); - } - else if (c === 38 || c === 40) { // Down/Up arrow - evt.preventDefault(); - me[c === 38? "previous" : "next"](); + // If the dropdown `ul` is in view, then act on keydown for the following keys: + // Enter / Esc / Up / Down + if(me.opened) { + if (c === 13 && me.selected) { // Enter + evt.preventDefault(); + me.select(); + } + else if (c === 27) { // Esc + me.close(); + } + else if (c === 38 || c === 40) { // Down/Up arrow + evt.preventDefault(); + me[c === 38? "previous" : "next"](); + } } } }); @@ -133,6 +137,10 @@ _.prototype = { return this.index > -1; }, + get opened() { + return this.ul && this.ul.getAttribute("hidden") == null; + }, + close: function () { this.ul.setAttribute("hidden", ""); this.index = -1; |