Добавьте AjaxFormComponentUpdatingBehavior("onchange")
.
Кажется, что OnChangeAjaxbehavior()
срабатывает при каждом изменении (используется Javascript Wicket.ChangeHandler
), как при каждом нажатии клавиши.
Использование AjaxFormComponentUpdatingBehavior
добавит прослушиватель событий к onChange
события javascript, такие как фокусировка вне текстового поля с другим значением или выбор значения из списка автозаполнения.
Все еще не уверен, почему OnChangeAjaxbehavior extends AjaxFormComponentUpdatingBehavior
не наследует эту логику от AjaxFormComponentUpdatingBehavior
, должно быть что-то, что она переопределяет.
ОБНОВЛЕНИЕ Это вполне может быть причиной того, что onchange
события javascript игнорируются при использовании OnChangeAjaxBehavior
.Исходный код Wicket.ChangeHandler
, найденный в wicket-ajax.js, устанавливает обработчики для различных событий:
- Резервное копирование обработчика событий
onchange
в onchangeoriginal
:
obj.onchangeoriginal = obj.onchange
- Если браузер IE, Safari и некоторые другие, он назначает оригинальный обработчик событий
onchange
для onKeyUp
, onpaste
и oncut
. - Еслинет, он назначает оригинальный обработчик события
onchange
на onInput
. Наконец, он всегда удаляет обработчик событий onchange
:
obj.onchange = function(event){
Wicket.stopEvent(event);
}
Код в wicket-autocomplete.js
, кажется, вручную запускает onchange
обработчик событий при выборе элемента.Вероятно, сначала следует проверить obj.onchangeoriginal
.
Итак, поскольку этот js выполняется в OnDomReady
, я сомневаюсь, что эти два поведения могут сосуществовать.Может быть, пришло время подать новую JIRA?
Это может быть слегка связанная проблема: WICKET-2424: OnChangeAjaxBehavior + DatePicker не работают вместе