обработка события onchange AutoCompleteTextField в калитке - PullRequest
7 голосов
/ 07 марта 2011

Я пишу компонент автозаполнения для веб-приложения с использованием Java и Wicket.

Есть ли способ обработки события onchange для запуска некоторого кода, когда пользователь выбирает один из параметров в списке автозаполнения?Я попытался сделать это в AutoCompleteTextField:

        setOutputMarkupId(true);
        add(new AjaxEventBehavior("onchange") {
            @Override
            protected void onEvent(AjaxRequestTarget target) {
                System.out.println(getInput());
            }
        });

Но метод getInput возвращает ноль.: (
Есть ли способ отреагировать на событие onchange и прочитать прочитанное пользователем?

Спасибо за ваше время и знания :)

1 Ответ

7 голосов
/ 07 марта 2011

Событие onchange происходит только тогда, когда фокус перемещается от компонента.(Это универсальный браузер / javascript).

Вместо этого вам нужно подключить обработчик к событию onkeypress.

Вам нужно не AjaxEventBehavior, а AjaxFormComponentUpdatingBehavior:

    add( new AjaxFormComponentUpdatingBehavior( "onchange") {

        @Override
        protected void onUpdate(AjaxRequestTarget target) {
            System.out.println( "Value: "+field.getValue() );

        }
    });

Хотя он работает и с getInput(), но обычно несколько более высокий уровень (должным образом экранированный и поддерживаемый моделью) getValue() лучше подходит.

...