At the moment wicket-autocomplete.js triggers event with name "change": https://github.com/apache/wicket/blob/580d92ddf068040214669c085f54d2faa702a921/wicket-extensions/src/main/java/org/apache/wicket/extensions/ajax/markup/html/autocomplete/wicket-autocomplete.js#L446
This makes it hard for the application to know whether this is a normal change event for the <input> or the manually triggered from selection from the dropdown. I am not sure how it works for the simple app. I have to try it to see what happens. Martin Grigorov Wicket Training and Consulting https://twitter.com/mtgrigorov On Thu, Jan 21, 2016 at 11:47 AM, Zbynek Vavros <[email protected]> wrote: > I'm not sure we understand each other. > Such a behavior is already there using AjaxFormComponentUpdatingBehavior > ("change"). > This way ajax is triggered ONLY when value is selected from choices (either > by mouse or by keyboard). > = exactly what I want. > > I tested this in small prototype and it works just fine. > > My issue is that this doesn't work in our business app so I am trying to > find why this works in prototype app > but not in business app (as I mentioned both use wicket-core and > wicket-extensions 7.0.0). > > What I found out is that in both cases (prototype and business app) > the event in line 178 in wicket-autocomplete.js is invoked as expected. The > issue is that business app does no ajax call after that. > > To summarize all I would like is some help with JS debugging since I am > java-dev and js-noob :( > > On Thu, Jan 21, 2016 at 10:35 AM, Martin Grigorov <[email protected]> > wrote: > > > OK. I understand now. > > Looking at wicket-autocomplete.js I see that it triggers "change" event > > after click on an entry. > > To support use cases like yours it has to trigger some custom event too, > > e.g. "itemselected.wa" ("wa" is a sample namespace for > > wicket-autocomplete). The you can use > > AjaxFormComponentUpdatingBehavior("itemselected.wa"). > > Please create a ticket in our JIRA! > > > > Martin Grigorov > > Wicket Training and Consulting > > https://twitter.com/mtgrigorov > > > > On Thu, Jan 21, 2016 at 10:27 AM, Zbynek Vavros <[email protected]> > > wrote: > > > > > What I mean by final value is value selected from list of options. > > > The OnChangeAjaxBehavior you suggested will do ajax on every key > stroke. > > > So lets say my autocomplete display list of cities. > > > I want the method called when user selects a value "London" from list. > > > Not on each stoke "L", "Lo", "Lon"... > > > > > > As I said, this is because I need to use the selected value for > > additional > > > processing. > > > > > > On Thu, Jan 21, 2016 at 9:56 AM, Martin Grigorov <[email protected] > > > > > wrote: > > > > > > > Hi, > > > > > > > > How do you decide when "final" value is entered ? > > > > You can use Ajax throttling to avoid sending requests on every typed > > > > character but only after N ms after the last typed character. See > > > > AjaxRequestAttributes#setThrottling() for this option. > > > > There is no magic that will read your users' mind to tell whether an > > > > entered value is final or not. > > > > > > > > Martin Grigorov > > > > Wicket Training and Consulting > > > > https://twitter.com/mtgrigorov > > > > > > > > On Thu, Jan 21, 2016 at 9:48 AM, Zbynek Vavros < > [email protected] > > > > > > > wrote: > > > > > > > > > Hey, > > > > > > > > > > sorry for not explaining properly... > > > > > I already tried that and in this case the the ajax call is > triggered > > > > > on "inputchange" as well, meaning on every key stroke. > > > > > > > > > > This is not desirable because we use the value of this autocomplete > > > field > > > > > to calculate value of another fields in form. This calculation > should > > > > > happen only > > > > > when "final" value is selected. > > > > > > > > > > Zbynek > > > > > > > > > > On Thu, Jan 21, 2016 at 9:27 AM, Martin Grigorov < > > [email protected] > > > > > > > > > wrote: > > > > > > > > > > > Hi, > > > > > > > > > > > > It is not very clear what exactly is the issue. > > > > > > As far as I understand the problem is that the Ajax call is > > triggered > > > > > only > > > > > > when you navigate to another form field. If this is the issue > then > > > try > > > > by > > > > > > using OnChangeAjaxBehavior instead of > > > > AjaxFormComponentUpdatingBehavior. > > > > > > > > > > > > Martin Grigorov > > > > > > Wicket Training and Consulting > > > > > > https://twitter.com/mtgrigorov > > > > > > > > > > > > On Wed, Jan 20, 2016 at 2:44 PM, Zbynek Vavros < > > > [email protected] > > > > > > > > > > > wrote: > > > > > > > > > > > > > Hi, > > > > > > > > > > > > > > in our project we have an AutoCompleteTextField with > > > > > > > AjaxFormComponentUpdatingBehavior ("change" event) attached. > > > > > > > > > > > > > > Small prototype I did proves that HTTP POST is done when an > item > > is > > > > > > > selected from choices (either by mouse or keyboard). But for > some > > > > > reason > > > > > > > the same code doesn't work in our project. It is required to > move > > > > focus > > > > > > to > > > > > > > another component for the POST to be send. The behavior works > > like > > > if > > > > > > > "blur" type of event is set but there is "change". > > > > > > > > > > > > > > I'm quite new to Wicket so I tried to compare all HTML & JS > files > > > but > > > > > > they > > > > > > > all seem to be the same. > > > > > > > Is there some other debug I can use to find what is going on (I > > > > suspect > > > > > > > something in JS but JS isn't my specialty) ? > > > > > > > > > > > > > > > > > > > > > Oh and both wicket-core and wicket-extension is 7.0.0. > > > > > > > > > > > > > > Thanks, > > > > > > > Zbynek > > > > > > > > > > > > > > > > > > > > > > > > > > > >
