Reputation: 1929
My AutoCompleteTextField (getChoices method implemented and working):
AutoCompleteTextField<String> objectDescription = new AutoCompleteTextField<String>("objectDescription") {
getChoices() {...}
}
To this textfield I add:
objectDescription.add(new OnChangeAjaxBehavior()) {
onUpdate() {....}
}
The onUpdate
method gets called everytime I write something in my textfield but not when I choose some item from the autocomplete menu. The string from the menu is written to the textfield but only calls the onUpdate when another change is made.
Edit: Before Wicket 1.5 this was working.
Upvotes: 3
Views: 4845
Reputation: 27880
Add an AjaxFormComponentUpdatingBehavior("onchange")
.
The OnChangeAjaxbehavior()
seems to fire at every change (uses the Javascript Wicket.ChangeHandler
), like in every key press.
Using an AjaxFormComponentUpdatingBehavior
will add the event listener to onChange
javascript events, like in focusing out of the textfield with a different value, or in selecting a value from the autocomplete list.
Still not sure why doesn't OnChangeAjaxbehavior extends AjaxFormComponentUpdatingBehavior
inherit this logic from AjaxFormComponentUpdatingBehavior
, there must be something it's overriding.
UPDATE This might well be the reason why onchange
javascript events are being ignored when using OnChangeAjaxBehavior
. The source code for Wicket.ChangeHandler
, found in wicket-ajax.js, sets handlers for different events:
onchange
event handler in onchangeoriginal
: obj.onchangeoriginal = obj.onchange
onchange
event handler to onKeyUp
, onpaste
and oncut
.onchange
event handler to onInput
. Finally, it always removes the onchange
event handler:
obj.onchange = function(event){
Wicket.stopEvent(event);
}
The code in wicket-autocomplete.js
seems to be manually firing the onchange
event handler at item selection. Probably it should be checking for obj.onchangeoriginal
first.
So, being this js executed in OnDomReady
, I doubt it's possible to make those two behaviors coexist. Maybe it's time to file a new JIRA?
This might be a slightly related issue: WICKET-2424: OnChangeAjaxBehavior + DatePicker do not work together
Upvotes: 5