From e98b0283dabecac5c3969fc13381479015522c1d Mon Sep 17 00:00:00 2001 From: Vitaliy Filippov Date: Thu, 12 Jan 2012 11:32:48 +0000 Subject: [PATCH] Passthrough arrows and Enter when hidden --- hinter.js | 24 +++++++++++++++++++----- 1 file changed, 19 insertions(+), 5 deletions(-) diff --git a/hinter.js b/hinter.js index af0a6bb..19f5bb2 100644 --- a/hinter.js +++ b/hinter.js @@ -291,7 +291,12 @@ var SimpleAutocomplete = function(input, dataLoader, multipleDelimiter, onChange if (ev.keyCode != 10 && ev.keyCode != 13) self.show(); if (ev.keyCode == 38 || ev.keyCode == 40 || ev.keyCode == 10 || ev.keyCode == 13) - return stopEvent(ev, true, true); + { + if (self.hintLayer.style.display == '') + return stopEvent(ev, true, true); + else + return true; + } self.onChange(); return true; }; @@ -301,13 +306,20 @@ var SimpleAutocomplete = function(input, dataLoader, multipleDelimiter, onChange { ev = ev||window.event; if (ev.keyCode == 10 || ev.keyCode == 13) - return stopEvent(ev, true, true); + { + if (self.hintLayer.style.display == '') + return stopEvent(ev, true, true); + else + return true; + } return true; }; // Handle arrow keys and Enter self.onKeyPress = function(ev) { + if (self.hintLayer.style.display == 'none') + return true; ev = ev||window.event; if (ev.keyCode == 38) // up self.moveHighlight(-1); @@ -364,11 +376,13 @@ var SimpleAutocomplete = function(input, dataLoader, multipleDelimiter, onChange // Show hinter self.show = function() { - var p = getOffset(self.input); - self.hintLayer.style.top = (p.top+self.input.offsetHeight) + 'px'; - self.hintLayer.style.left = p.left + 'px'; if (!self.disabled) + { + var p = getOffset(self.input); + self.hintLayer.style.top = (p.top+self.input.offsetHeight) + 'px'; + self.hintLayer.style.left = p.left + 'px'; self.hintLayer.style.display = ''; + } }; // Disable hinter, for the case when there is no items and no empty text