Details
-
Bug
-
Status: Resolved
-
Major
-
Resolution: Fixed
-
1.3.4
-
None
-
Ubuntu/Firefox 3.0.1, OS X/Safari 3.1.2, Win XP/IE6, Win XP/IE7
Description
We have a form with multiple AutoCompleteTextFields in it. If the user enters text in text field A, and moves focus to text field B immediately (within the throttle delay) e.g. using tab, the autocompletion list appears in text field A even though it doesn't have the focus anymore.
Looking at wicket-autocomplete.js, the fix should be pretty straightforward, i.e. just check whether the input still has focus at the time when the autocompletion list is shown (in doUpdateChoices(resp)). This works for me:
— wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js (revision 694678)
+++ wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js (working copy)
@@ -304,9 +304,9 @@
function doUpdateChoices(resp){
- // check if the input hasn't been cleared in the meanwhile
+ // check that the input still has focus and hasn't been cleared in the meanwhile
var input=wicketGet(elementId); - if (!cfg.showListOnEmptyInput && (input.value==null || input.value=="")) {
+ if ((Wicket.Focus.getFocusedElement() != input) || (!cfg.showListOnEmptyInput && (input.value==null || input.value==""))) { hideAutoComplete(); return; }