mirror of
https://github.com/jimeh/fancy_input.git
synced 2026-02-19 11:36:41 +00:00
perfected keyboard navigation
This commit is contained in:
@@ -16,15 +16,14 @@
|
|||||||
};
|
};
|
||||||
}).blur(function(){
|
}).blur(function(){
|
||||||
self.hide();
|
self.hide();
|
||||||
}).keyup(function(e){
|
}).keydown(function(e){
|
||||||
var TAB = 9;
|
|
||||||
var RETURN = 13;
|
var RETURN = 13;
|
||||||
var ESC = 27;
|
var ESC = 27;
|
||||||
var ARRUP = 38;
|
var ARRUP = 38;
|
||||||
var ARRDN = 40;
|
var ARRDN = 40;
|
||||||
switch(e.keyCode) {
|
switch(e.keyCode) {
|
||||||
case ARRUP: self.select_prev($options); return false;
|
case ARRUP: self.select_prev($e, $options); return false;
|
||||||
case ARRDN: self.select_next($options); return false;
|
case ARRDN: self.select_next($e, $options); return false;
|
||||||
case ESC: self.clear($e, $options); break;
|
case ESC: self.clear($e, $options); break;
|
||||||
case RETURN: self.activate_selected($options); return false;
|
case RETURN: self.activate_selected($options); return false;
|
||||||
default:
|
default:
|
||||||
@@ -56,9 +55,7 @@
|
|||||||
if (typeof(options.url) === "string" && options.url !== "") {
|
if (typeof(options.url) === "string" && options.url !== "") {
|
||||||
//TODO support fetching results from server-side
|
//TODO support fetching results from server-side
|
||||||
} else {
|
} else {
|
||||||
console.log(options.data);
|
|
||||||
var results = self.filter_data(terms, options.data, options);
|
var results = self.filter_data(terms, options.data, options);
|
||||||
console.log(results);
|
|
||||||
};
|
};
|
||||||
self.current_results = results;
|
self.current_results = results;
|
||||||
if (results.length > 0) {
|
if (results.length > 0) {
|
||||||
@@ -132,10 +129,9 @@
|
|||||||
}, 500);
|
}, 500);
|
||||||
};
|
};
|
||||||
|
|
||||||
$.fn.suggest_results.select_next = function(options){
|
$.fn.suggest_results.select_next = function(elm, options){
|
||||||
var self = $.fn.suggest_results;
|
var self = $.fn.suggest_results;
|
||||||
var limit = self.current_results.length;
|
var limit = self.current_results.length;
|
||||||
console.log(limit);
|
|
||||||
if (limit > 0) {
|
if (limit > 0) {
|
||||||
if (self.selected_result === null) {
|
if (self.selected_result === null) {
|
||||||
self.selected_result = 0;
|
self.selected_result = 0;
|
||||||
@@ -149,10 +145,9 @@
|
|||||||
return false;
|
return false;
|
||||||
};
|
};
|
||||||
|
|
||||||
$.fn.suggest_results.select_prev = function(options){
|
$.fn.suggest_results.select_prev = function(elm, options){
|
||||||
var self = $.fn.suggest_results;
|
var self = $.fn.suggest_results;
|
||||||
var limit = self.current_results.length;
|
var limit = self.current_results.length;
|
||||||
console.log(limit);
|
|
||||||
if (limit > 0) {
|
if (limit > 0) {
|
||||||
if (self.selected_result === null) {
|
if (self.selected_result === null) {
|
||||||
self.selected_result = limit - 1;
|
self.selected_result = limit - 1;
|
||||||
@@ -161,6 +156,10 @@
|
|||||||
$(".selected", self.box).removeClass("selected");
|
$(".selected", self.box).removeClass("selected");
|
||||||
self.selected_result--;
|
self.selected_result--;
|
||||||
$("#suggested_result_" + self.selected_result, self.box).addClass("selected");
|
$("#suggested_result_" + self.selected_result, self.box).addClass("selected");
|
||||||
|
} else {
|
||||||
|
$(".selected", self.box).removeClass("selected");
|
||||||
|
self.selected_result = null;
|
||||||
|
elm.putCursorAtEnd();
|
||||||
};
|
};
|
||||||
};
|
};
|
||||||
return false;
|
return false;
|
||||||
@@ -249,6 +248,20 @@
|
|||||||
};
|
};
|
||||||
};
|
};
|
||||||
|
|
||||||
|
// "borrowed" from PutCursorAtEnd plugin: http://plugins.jquery.com/project/PutCursorAtEnd
|
||||||
|
$.fn.putCursorAtEnd = function(){
|
||||||
|
return this.each(function(){
|
||||||
|
$(this).focus();
|
||||||
|
if (this.setSelectionRange) {
|
||||||
|
var len = $(this).val().length * 2;
|
||||||
|
this.setSelectionRange(len, len);
|
||||||
|
} else {
|
||||||
|
$(this).val($(this).val());
|
||||||
|
}
|
||||||
|
this.scrollTop = 999999;
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
$.fn.suggest_results.defaults = {
|
$.fn.suggest_results.defaults = {
|
||||||
delay: 150,
|
delay: 150,
|
||||||
limit: 6,
|
limit: 6,
|
||||||
|
|||||||
Reference in New Issue
Block a user