You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@wicket.apache.org by mg...@apache.org on 2021/06/24 13:37:53 UTC

[wicket] branch wicket-8.x updated: WICKET-6896 AutoCompleteTextField re-opens dropdown item list after item has been selected

This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch wicket-8.x
in repository https://gitbox.apache.org/repos/asf/wicket.git


The following commit(s) were added to refs/heads/wicket-8.x by this push:
     new 97d0730  WICKET-6896 AutoCompleteTextField re-opens dropdown item list after item has been selected
97d0730 is described below

commit 97d07303d4e02dab436866ff7c45e63e9b3850c3
Author: Martin Tzvetanov Grigorov <mg...@apache.org>
AuthorDate: Thu Jun 24 16:36:07 2021 +0300

    WICKET-6896 AutoCompleteTextField re-opens dropdown item list after item has been selected
    
    (cherry picked from commit 45f0333f99da5f5eb21e7b9f659959c527780084)
---
 .../markup/html/autocomplete/wicket-autocomplete.js    | 18 +++++++++++++++---
 1 file changed, 15 insertions(+), 3 deletions(-)

diff --git a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
index 8d90aa9..e9624de 100644
--- a/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
+++ b/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js
@@ -77,6 +77,12 @@
 		// timeout handler that cancels the hiding of the menu if the focus is still on menu items
 		var hideAutoCompleteTimer;
 
+		// A flag indicating whether the 'change' event has been triggered manually after selection
+		// from the menu.
+		// In this case we don't want to render the menu.
+		// It is usually rendered on successful Ajax response
+		var isTriggeredChange = false;
+
 		function initialize(){
 			var isShowing = false;
 			// Remove the autocompletion menu if still present from
@@ -456,9 +462,10 @@
 			}
 			
 			if (triggerChangeOnHide) {
-				var input = Wicket.$(ajaxAttributes.c);
-				jQuery(input).triggerHandler('change');
 				triggerChangeOnHide = false;
+				var input = Wicket.$(ajaxAttributes.c);
+				isTriggeredChange = true;
+				jQuery(input).trigger('change');
 			}
 		}
 
@@ -683,7 +690,12 @@
 					}
 					setSelected(selectedIndex);
 				}
-				showAutoComplete();
+
+				if (isTriggeredChange) {
+					isTriggeredChange = false;
+				} else {
+					showAutoComplete();
+				}
 			} else {
 				hideAutoComplete();
 			}