summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--share/www/script/futon.browse.js13
-rw-r--r--share/www/script/jquery.suggest.js14
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);
});