Great! A fadeout will be even better ;-) 
If possible we could port the animation duration to the autosuggest settings, 
so every instance can set its own duration.

Let me know if I can do anything to help, ok?


-----Original Message-----
From: andrea del bene [mailto:[email protected]] 
Sent: Tuesday, July 21, 2015 15:16
To: [email protected]
Subject: Re: Autocomplete event flow bug

I'm not sure if it's just a cosmetic effect, but I agree with you. I will 
investigate a little bit more. If this is the case, I will replace 'setTimeout' 
with jquery fadeout.

On 21/07/2015 11:54, Elger van Boxtel wrote:
> That solution would work as well, but why would we need the delay of 500 ms 
> to hide the autosuggest box? Is that a pure cosmetic solution or does it add 
> any functionality?
>
> I'd rather remove the setTimeout if we do not need it then adding a change 
> event trigger and setting 2 flags to avoid triggering the change event again. 
> That just doesn't feel right...
>
>
>
> -----Original Message-----
> From: andrea del bene [mailto:[email protected]]
> Sent: Tuesday, July 21, 2015 10:40
> To: [email protected]
> Subject: Re: Autocomplete event flow bug
>
> Hi,
>
> I'd rather trigger 'change' event before calling 
> 'window.setTimeout(hideAutoComplete, 500);'. To avoid 'change' to be called 
> twice, we can set flag 'triggerChangeOnHide = false' and 'visible = 0 '
>
> On 20/07/2015 16:58, Elger van Boxtel wrote:
>> Hi All,
>>
>> I'm having a problem with the current implementation of the 
>> autocomplete. Let me explain first:
>>
>> I have a form with a autocomplete field (AutoCompleteBehavior) and a 
>> saveAjaxButtonon it. Apart from this, this field has a onchange 
>> AjaxEventBehaviourto do some validation on the backend and possibly 
>> make some changes to the field.
>>
>> When I fill in the field and without leaving the field (and thus no 
>> blur event has been triggered yet) I click on the save AjaxButton.
>>
>> What I'd expect to happen is the following event flow:
>>
>> -*blur*: the field has been blurred
>>
>> -*change*: the field has been changed
>>
>> -*click*: the click on the save button
>>
>> Instead this is what happens:
>>
>> -*blur*
>>
>> -*click*
>>
>> -*change*
>>
>> Further investigation tells me that this is because of the 
>> wicket-autocomplete.jsimplementation for the blurevent handler.
>>
>> wicket-autocomplete.js can be found
>> on:\wicket-head\wicket\wicket-extensions\src\main\java\org\apache\wic
>> k et\extensions\ajax\markup\html\autocomplete
>>
>> On line 91 the blur event hander can be found:
>>
>> Wicket.Event.add(obj, 'blur', function (jqEvent) {
>>
>> window.setTimeout(hideAutoComplete, 500);
>>
>> });
>>
>> This wraps the hideAutoCompletefield in a setTimeoutof 500 ms. In the 
>> hideAutoComplete, the changeevent is triggered (line 438).
>>
>> The setTimout call causes the change event to be executed after the 
>> click event, leaving me with a partially saved form.
>>
>> To fix this, I could remove the setTimeoutfunctionality from the 
>> blurevent handler. This will call hideAutoCompleteimmediately. This 
>> change will cause the autocomplete dialog to be closed immediately 
>> and leaving us with the right event stack. I've not noticed any other 
>> side effects.
>>
>> I have a patch ready, but I'd like to have your thoughts on this. 
>> When necessary, I can create an issue on https://issues.apache.org 
>> and send a pull request.
>>
>> All code has been taken from latest greatest Wicket on Github.
>>
>> With kind regards,
>>
>> Elger van Boxtel
>> Agile Developer
>> --------------------
>> *Planon B.V.*
>> Postbus 38074
>> 6503 AB Nijmegen
>>
>> Wijchenseweg 8
>> 6537 TL Nijmegen
>>
>> Nederland
>> T: +31 (0) 24 750 7727
>>
>> F: +31 (0) 24 642 2942
>>
>> *E*: [email protected] <mailto:[email protected]>
>> *W*: www.planon.nl <http://www.planon.nl/>
>>
>> *W*: http://elgervanboxtel.nl
>>
>> *LN*: LinkedIn <https://nl.linkedin.com/in/elgervanboxtel>
>>
>> *GH:* GitHub <https://github.com/elgervb>_
>>
>> This e-mail and any attachment is for authorized use by the intended
>> recipient(s) only. It may contain proprietary material, confidential 
>> information and/or be subject to legal privilege. It should not be 
>> copied, disclosed to, retained or used by, any other party. If you 
>> are not an intended recipient then please promptly delete this e-mail 
>> and any attachment and all copies and inform the sender.
>>
>> ***Please consider the environment before printing this e-mail*.
>>

Reply via email to