|
@@ -1089,6 +1089,8 @@
|
|
|
this makes sure the search field is focussed even if the current event would blur it */
|
|
|
window.setTimeout(this.bind(function () {
|
|
|
this.search.focus();
|
|
|
+ // reset the value so IE places the cursor at the end of the input box
|
|
|
+ this.search.val(this.search.val());
|
|
|
}), 10);
|
|
|
},
|
|
|
|
|
@@ -1203,7 +1205,7 @@
|
|
|
// single
|
|
|
focus: function () {
|
|
|
this.close();
|
|
|
- this.search.focus();
|
|
|
+ this.container.focus();
|
|
|
},
|
|
|
|
|
|
// single
|
|
@@ -1214,7 +1216,7 @@
|
|
|
// single
|
|
|
cancel: function () {
|
|
|
this.parent.cancel.apply(this, arguments);
|
|
|
- this.search.focus();
|
|
|
+ this.container.focus();
|
|
|
},
|
|
|
|
|
|
// single
|
|
@@ -1253,18 +1255,6 @@
|
|
|
killEvent(e);
|
|
|
return;
|
|
|
}
|
|
|
- } else {
|
|
|
- if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {
|
|
|
- return;
|
|
|
- }
|
|
|
-
|
|
|
- this.open();
|
|
|
-
|
|
|
- if (e.which === KEY.ENTER) {
|
|
|
- // do not propagate the event otherwise we open, and propagate enter which closes
|
|
|
- killEvent(e);
|
|
|
- return;
|
|
|
- }
|
|
|
}
|
|
|
}));
|
|
|
|
|
@@ -1273,7 +1263,7 @@
|
|
|
|
|
|
if (this.opened()) {
|
|
|
this.close();
|
|
|
- this.search.focus();
|
|
|
+ this.container.focus();
|
|
|
} else if (this.enabled) {
|
|
|
this.open();
|
|
|
}
|
|
@@ -1283,6 +1273,50 @@
|
|
|
}));
|
|
|
|
|
|
dropdown.bind("click", this.bind(function() { this.search.focus(); }));
|
|
|
+
|
|
|
+ container.bind("focus", this.bind(function() {
|
|
|
+ // allows the container to recieve the keyup event
|
|
|
+ this.container.attr("tabindex", 1);
|
|
|
+ }));
|
|
|
+
|
|
|
+ container.bind("blur", this.bind(function() {
|
|
|
+ // remove the tabindex so the tab key works properly
|
|
|
+ this.container.attr("tabindex", -1);
|
|
|
+ }));
|
|
|
+
|
|
|
+ container.bind("keydown", this.bind(function(e) {
|
|
|
+ if (!this.enabled) return;
|
|
|
+
|
|
|
+ this.container.attr("tabindex", -1);
|
|
|
+
|
|
|
+ if (e.which === KEY.PAGE_UP || e.which === KEY.PAGE_DOWN) {
|
|
|
+ // prevent the page from scrolling
|
|
|
+ killEvent(e);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ if (!this.opened()) {
|
|
|
+ if (e.which === KEY.TAB || KEY.isControl(e) || KEY.isFunctionKey(e) || e.which === KEY.ESC) {
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ this.open();
|
|
|
+
|
|
|
+ if (e.which === KEY.ENTER) {
|
|
|
+ // do not propagate the event otherwise we open, and propagate enter which closes
|
|
|
+ killEvent(e);
|
|
|
+ return;
|
|
|
+ }
|
|
|
+
|
|
|
+ var keyWritten = String.fromCharCode(e.which).toLowerCase();
|
|
|
+
|
|
|
+ if (e.shiftKey) {
|
|
|
+ keyWritten = keyWritten.toUpperCase();
|
|
|
+ }
|
|
|
+
|
|
|
+ this.search.val(keyWritten);
|
|
|
+ }
|
|
|
+ }));
|
|
|
|
|
|
selection.delegate("abbr", "click", this.bind(function (e) {
|
|
|
if (!this.enabled) return;
|
|
@@ -1290,7 +1324,7 @@
|
|
|
killEvent(e);
|
|
|
this.close();
|
|
|
this.triggerChange();
|
|
|
- this.search.focus();
|
|
|
+ this.container.focus();
|
|
|
}));
|
|
|
|
|
|
selection.bind("focus", this.bind(function() { this.search.focus(); }));
|
|
@@ -1403,7 +1437,7 @@
|
|
|
this.opts.element.val(this.id(data));
|
|
|
this.updateSelection(data);
|
|
|
this.close();
|
|
|
- this.search.focus();
|
|
|
+ this.container.focus();
|
|
|
|
|
|
if (!equal(old, this.id(data))) { this.triggerChange(); }
|
|
|
},
|
|
@@ -1697,7 +1731,7 @@
|
|
|
// multi
|
|
|
focus: function () {
|
|
|
this.close();
|
|
|
- this.search.focus();
|
|
|
+ this.container.focus();
|
|
|
},
|
|
|
|
|
|
// multi
|