From 40e36371173ba2304623fac3ab81ee2d63187649 Mon Sep 17 00:00:00 2001
From: jzaefferer
Date: Fri, 26 Mar 2010 12:40:46 -0400
Subject: Added $.ui.keyCode.ALT to complete list of metakeys, used in
autocomplete
---
ui/jquery.ui.autocomplete.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'ui/jquery.ui.autocomplete.js')
diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js
index 83a8cf7a4..eb07b4a4e 100644
--- a/ui/jquery.ui.autocomplete.js
+++ b/ui/jquery.ui.autocomplete.js
@@ -70,7 +70,7 @@ $.widget( "ui.autocomplete", {
case keyCode.RIGHT:
case keyCode.SHIFT:
case keyCode.CONTROL:
- case 18:
+ case keyCode.ALT:
// ignore metakeys (shift, ctrl, alt)
break;
default:
--
cgit v1.2.3
From 6d9caf1e230b7b9a4291a8e3525eefad2f08b6f8 Mon Sep 17 00:00:00 2001
From: jzaefferer
Date: Fri, 26 Mar 2010 12:42:03 -0400
Subject: Autocomplete: Only remove classes actually added by the widget,
ui-widget etc. aren't added, so don't remove them
---
ui/jquery.ui.autocomplete.js | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
(limited to 'ui/jquery.ui.autocomplete.js')
diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js
index eb07b4a4e..a1d798c59 100644
--- a/ui/jquery.ui.autocomplete.js
+++ b/ui/jquery.ui.autocomplete.js
@@ -140,7 +140,7 @@ $.widget( "ui.autocomplete", {
destroy: function() {
this.element
- .removeClass( "ui-autocomplete-input ui-widget ui-widget-content" )
+ .removeClass( "ui-autocomplete-input" )
.removeAttr( "autocomplete" )
.removeAttr( "role" )
.removeAttr( "aria-autocomplete" )
--
cgit v1.2.3
From c01b3baef97808a3a7dfafaea084c03a27e92564 Mon Sep 17 00:00:00 2001
From: jzaefferer
Date: Thu, 8 Apr 2010 12:05:52 +0200
Subject: Autocomplete: Track input changes and fire change-event on blur,
along with selected item, if available. Fix for #5490
---
tests/unit/autocomplete/autocomplete_events.js | 25 +++++++++++++++++++++----
ui/jquery.ui.autocomplete.js | 11 +++++++++--
2 files changed, 30 insertions(+), 6 deletions(-)
(limited to 'ui/jquery.ui.autocomplete.js')
diff --git a/tests/unit/autocomplete/autocomplete_events.js b/tests/unit/autocomplete/autocomplete_events.js
index ccbe66c1b..28a72145e 100644
--- a/tests/unit/autocomplete/autocomplete_events.js
+++ b/tests/unit/autocomplete/autocomplete_events.js
@@ -12,7 +12,7 @@ module("autocomplete: events", {
var data = ["c++", "java", "php", "coldfusion", "javascript", "asp", "ruby", "python", "c", "scala", "groovy", "haskell", "perl"];
test("all events", function() {
- expect(11);
+ expect(12);
var ac = $("#autocomplete").autocomplete({
delay: 0,
source: data,
@@ -34,21 +34,38 @@ test("all events", function() {
same(event.type, "autocompleteselect");
same(ui.item, {label:"java", value:"java"});
},
- change: function(event) {
+ change: function(event, ui) {
same(event.type, "autocompletechange");
+ same(ui.item, {label:"java", value:"java"});
same( $(".ui-menu:visible").length, 0 );
+ start();
}
});
stop();
- ac.val("ja").keydown();
+ ac.focus().val("ja").keydown();
setTimeout(function() {
same( $(".ui-menu:visible").length, 1 );
ac.simulate("keydown", { keyCode: $.ui.keyCode.DOWN });
ac.simulate("keydown", { keyCode: $.ui.keyCode.ENTER });
- start();
+ ac.blur();
}, 50);
});
+test("change without selection", function() {
+ expect(2);
+ stop();
+ var ac = $("#autocomplete").autocomplete({
+ delay: 0,
+ source: data,
+ change: function(event, ui) {
+ same(event.type, "autocompletechange");
+ same(ui.item, null);
+ start();
+ }
+ });
+ ac.focus().val("ja").blur();
+});
+
test("cancel search", function() {
expect(6);
var first = true;
diff --git a/ui/jquery.ui.autocomplete.js b/ui/jquery.ui.autocomplete.js
index a1d798c59..14a19e4b2 100644
--- a/ui/jquery.ui.autocomplete.js
+++ b/ui/jquery.ui.autocomplete.js
@@ -83,6 +83,7 @@ $.widget( "ui.autocomplete", {
}
})
.bind( "focus.autocomplete", function() {
+ self.selectedItem = null;
self.previous = self.element.val();
})
.bind( "blur.autocomplete", function( event ) {
@@ -91,6 +92,7 @@ $.widget( "ui.autocomplete", {
// TODO try to implement this without a timeout, see clearTimeout in search()
self.closing = setTimeout(function() {
self.close( event );
+ self._change( event );
}, 150 );
});
this._initSource();
@@ -116,11 +118,13 @@ $.widget( "ui.autocomplete", {
self.element.val( item.value );
}
self.close( event );
- self.previous = self.element.val();
// only trigger when focus was lost (click on menu)
+ var previous = self.previous;
if ( self.element[0] !== doc.activeElement ) {
self.element.focus();
+ self.previous = previous;
}
+ self.selectedItem = item;
},
blur: function( event, ui ) {
if ( self.menu.element.is(":visible") ) {
@@ -219,8 +223,11 @@ $.widget( "ui.autocomplete", {
this.menu.element.hide();
this.menu.deactivate();
}
+ },
+
+ _change: function( event ) {
if ( this.previous !== this.element.val() ) {
- this._trigger( "change", event );
+ this._trigger( "change", event, { item: this.selectedItem } );
}
},
--
cgit v1.2.3
From dbc9addfae0c9a2aee2d4a1833b2b1d3ba83f8de Mon Sep 17 00:00:00 2001
From: jzaefferer
Date: Fri, 16 Apr 2010 11:05:35 +0200
Subject: Autocomplete: Refactored code for array filtering into
$.ui.autocomplete.filter, used by remote-with-cache and modified
multiple-demo (now with local data); added multiple-remote to also show
multiple with remote data
---
demos/autocomplete/index.html | 1 +
demos/autocomplete/multiple-remote.html | 75 +++++++++++++++++++++++++++++++
demos/autocomplete/multiple.html | 22 ++++-----
demos/autocomplete/remote-with-cache.html | 7 ++-
ui/jquery.ui.autocomplete.js | 12 ++---
5 files changed, 94 insertions(+), 23 deletions(-)
create mode 100644 demos/autocomplete/multiple-remote.html
(limited to 'ui/jquery.ui.autocomplete.js')
diff --git a/demos/autocomplete/index.html b/demos/autocomplete/index.html
index 0c92d19b4..c7b720784 100644
--- a/demos/autocomplete/index.html
+++ b/demos/autocomplete/index.html
@@ -18,6 +18,7 @@
XML data parsed once
Categories
Multiple values
+ Multiple, remote
+
+
+
+
+
+Usage: Enter at least two characters to get bird name suggestions. Select a value to continue adding more names.
+
+
+This is an example showing how to use the source-option along with some events to enable autocompleting multiple values into a single field.
+
+
+
+
diff --git a/demos/autocomplete/multiple-remote.html b/demos/autocomplete/multiple-remote.html
new file mode 100644
index 000000000..5e0f4b50b
--- /dev/null
+++ b/demos/autocomplete/multiple-remote.html
@@ -0,0 +1,75 @@
+
+
+