Passthrough arrows and Enter when hidden

master
Vitaliy Filippov 2012-01-12 11:32:48 +00:00
parent 8837a2dbf3
commit e98b0283da
1 changed files with 19 additions and 5 deletions

View File

@ -291,7 +291,12 @@ var SimpleAutocomplete = function(input, dataLoader, multipleDelimiter, onChange
if (ev.keyCode != 10 && ev.keyCode != 13) if (ev.keyCode != 10 && ev.keyCode != 13)
self.show(); self.show();
if (ev.keyCode == 38 || ev.keyCode == 40 || ev.keyCode == 10 || ev.keyCode == 13) 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(); self.onChange();
return true; return true;
}; };
@ -301,13 +306,20 @@ var SimpleAutocomplete = function(input, dataLoader, multipleDelimiter, onChange
{ {
ev = ev||window.event; ev = ev||window.event;
if (ev.keyCode == 10 || ev.keyCode == 13) 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; return true;
}; };
// Handle arrow keys and Enter // Handle arrow keys and Enter
self.onKeyPress = function(ev) self.onKeyPress = function(ev)
{ {
if (self.hintLayer.style.display == 'none')
return true;
ev = ev||window.event; ev = ev||window.event;
if (ev.keyCode == 38) // up if (ev.keyCode == 38) // up
self.moveHighlight(-1); self.moveHighlight(-1);
@ -364,11 +376,13 @@ var SimpleAutocomplete = function(input, dataLoader, multipleDelimiter, onChange
// Show hinter // Show hinter
self.show = function() 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) 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 = ''; self.hintLayer.style.display = '';
}
}; };
// Disable hinter, for the case when there is no items and no empty text // Disable hinter, for the case when there is no items and no empty text