diff options
-rw-r--r-- | share/www/script/futon.browse.js | 13 | ||||
-rw-r--r-- | share/www/script/jquery.suggest.js | 14 |
2 files changed, 15 insertions, 12 deletions
diff --git a/share/www/script/futon.browse.js b/share/www/script/futon.browse.js index cdd3a41e..9e8aba66 100644 --- a/share/www/script/futon.browse.js +++ b/share/www/script/futon.browse.js @@ -331,12 +331,14 @@ load: function(elem) { $("#input_docid", elem).val(designDocId).suggest(function(text, callback) { db.allDocs({ - limit: 10, startkey: "_design/" + text, - endkey: "_design/" + text + "ZZZZ", + limit: 10, startkey: "_design/" + text, endkey: "_design0", success: function(docs) { var matches = []; for (var i = 0; i < docs.rows.length; i++) { - matches[i] = docs.rows[i].id.substr(8); + var docName = docs.rows[i].id.substr(8); + if (docName.substr(0, text.length) == text) { + matches[i] = docName; + } } callback(matches); } @@ -349,10 +351,9 @@ var matches = []; if (!doc.views) return; for (var viewName in doc.views) { - if (!doc.views.hasOwnProperty(viewName) || !viewName.match("^" + text)) { - continue; + if (viewName.substr(0, text.length) == text) { + matches.push(viewName); } - matches.push(viewName); } callback(matches); } diff --git a/share/www/script/jquery.suggest.js b/share/www/script/jquery.suggest.js index bc0dfbf8..cc8fe549 100644 --- a/share/www/script/jquery.suggest.js +++ b/share/www/script/jquery.suggest.js @@ -38,7 +38,6 @@ if ($.inArray(e.keyCode, [38, 40]) != -1 || (dropdown.is(":visible") && (e.keyCode == 27 || ($.inArray(e.keyCode, [9, 13]) != -1 && getSelection())))) { - e.preventDefault(); e.stopPropagation(); switch(e.keyCode) { case 38: // up moveUp(); @@ -49,11 +48,13 @@ case 9: // tab case 13: // return commit(); + if (e.keyCode == 9) return true; break; case 27: // escape dropdown.hide(); break; } + e.preventDefault(); e.stopPropagation(); return false; } else { timer = setTimeout(function() { suggest() }, options.delay); @@ -120,11 +121,12 @@ } $.fn.suggest = function(callback, options) { - options = options || {}; - options.callback = callback; - options.delay = options.delay || 100; - options.dropdownClass = options.dropdownClass || "suggest-dropdown"; - options.minChars = options.minChars || 1; + options = $.extend({ + callback: callback, + delay: 100, + dropdownClass: "suggest-dropdown", + minChars: 1 + }, options || {}); return this.each(function() { suggest(this, options); }); |