some works on autocomplete (return with no selection = cancel, tab = select next)

This commit is contained in:
Friendika 2011-11-11 22:40:19 -08:00
parent c9014a111f
commit 78bfb8b14e

View file

@ -23,6 +23,13 @@ function ACPopup(elm,backend_url){
style = $(elm.container).offset(); style = $(elm.container).offset();
w = elm.container.offsetWidth; w = elm.container.offsetWidth;
h = elm.container.offsetHeight; h = elm.container.offsetHeight;
// Quick fix for chrome until I get a tool to inspect the dom
// Chrome returns 0x0
if(! w)
w = 530;
if(! h)
h = 130;
} }
style.top=style.top+h; style.top=style.top+h;
@ -105,24 +112,28 @@ ACPopup.prototype._search = function(){
$(this.cont).append(elm); $(this.cont).append(elm);
} }
ACPopup.prototype.onkey = function(event){ ACPopup.prototype.onkey = function(event){
if (event.keyCode == '13' && this.idsel>-1) { if (event.keyCode == '13') {
if(this.idsel>-1) {
this.cont.children()[this.idsel].click(); this.cont.children()[this.idsel].click();
event.preventDefault(); event.preventDefault();
} }
else
this.close();
}
if (event.keyCode == '38') { //cursor up if (event.keyCode == '38') { //cursor up
cmax = this.cont.children().size()-1; cmax = this.cont.children().size()-1;
this.idsel--; this.idsel--;
if (this.idsel<0) this.idsel=cmax; if (this.idsel<0) this.idsel=cmax;
event.preventDefault(); event.preventDefault();
} }
if (event.keyCode == '40') { //cursor down if (event.keyCode == '40' || event.keyCode == '9') { //cursor down
cmax = this.cont.children().size()-1; cmax = this.cont.children().size()-1;
this.idsel++; this.idsel++;
if (this.idsel>cmax) this.idsel=0; if (this.idsel>cmax) this.idsel=0;
event.preventDefault(); event.preventDefault();
} }
if (event.keyCode == '38' || event.keyCode == '40' ) { if (event.keyCode == '38' || event.keyCode == '40' || event.keyCode == '9') {
this.cont.children().removeClass('selected'); this.cont.children().removeClass('selected');
$(this.cont.children()[this.idsel]).addClass('selected'); $(this.cont.children()[this.idsel]).addClass('selected');
} }