处理 wicket 中 AutoCompleteTextField 的 onchange 事件

发布于 2024-10-20 17:34:11 字数 495 浏览 2 评论 0原文

我正在使用 Java 和 Wicket 为 Web 应用程序编写一个自动完成组件。

当用户选择自动完成列表的选项之一时,有没有办法处理 onchange 事件来运行一些代码?我尝试在 AutoCompleteTextField 中执行此操作:

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

但 getInput 方法返回 null。 :(
有没有办法对 onchange 事件做出反应并能够读取用户输入的内容?

感谢您的时间和知识:)

I'm writing an autocomplete component for a webapp using Java and Wicket.

Is there a way to handle the onchange event to run some code when the user selects one of the options of the autocomplete list? I tried doing this in the AutoCompleteTextField:

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

But the getInput method returns null. :(
Is there a way to react to the onchange event and to be able to read what the user has entered?

Thanks for you time and knowledge :)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

暮色兮凉城 2024-10-27 17:34:11

onchange 事件仅在焦点移离组件时触发。 (这是通用浏览器/javascript 的东西。)

您需要将处理程序挂钩到 onkeypress 事件。

您需要的不是 AjaxEventBehavior 但是 AjaxFormComponentUpdatingBehavior

    add( new AjaxFormComponentUpdatingBehavior( "onchange") {

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

        }
    });

虽然它也可以与 getInput() 一起使用,但通常是更高级别的(正确转义并由模型支持)getValue( ) 更合适。

The onchange event is only fired when the focus is moved away from the component. (This is a universal browser/javascript thing.)

You need to hook your handler to the onkeypress event instead.

What you need is not AjaxEventBehavior but AjaxFormComponentUpdatingBehavior:

    add( new AjaxFormComponentUpdatingBehavior( "onchange") {

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

        }
    });

Although it works with getInput() too, but usually the somewhat higher level (properly escaped and backed by the model) getValue() is a better fit.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文