【问题标题】:AutoCompleteField onchange/onselect not firingAutoCompleteField onchange/onselect 未触发
【发布时间】:2021-12-16 10:42:03
【问题描述】:

我在检票口 6。我有一个自动完成字段,我想在有人完成该字段时捕获该字段,方法是完全输入已完成的 ID,或者从列表中选择一个并从该字段继续。

    AutoCompleteTextField<AssetInfo> assetID = new AutoCompleteTextField<AssetInfo>("assetId", Model.of(new AssetInfo()), AssetInfo.class, renderer, assetInfoSettings) {
        private static final long serialVersionUID = 1L;

        @Override
        protected Iterator<AssetInfo> getChoices(String input) {
            return assetInfoService.fetchAssetIDsForComplete(input).iterator();
        }
    };      
    assetID.add(new AjaxFormSubmitBehavior("onselect") {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            onAssetIdSelect(target);
        }
    });
    assetID.add(new AjaxFormSubmitBehavior("onchange") {
        private static final long serialVersionUID = 1L;

        @Override
        protected void onSubmit(AjaxRequestTarget target) {
            onAssetIdSelect(target);
        }
    });

我尝试了 AjaxFormSubmitBehavior 和 AjaxFormComponentUpdatingBehavior。也没有向我触发事件。我查看了浏览器的网络选项卡,我可以看到从列表中选择某些内容会创建一个 ajax 事件,但不会在键入后退出字段。也没有得到我的行为代码。

似乎 wicket 7 在自动完成本身上有一个 onSelect 方法,但没有 wicket 6.x,我正在使用它,目前没有权限继续。我认为原因是文本框的 onchange 可能绑定到一些旨在创建列表的内部 ajax 行为......那么如何捕获我需要控制页面其余部分的呈现的事件?我可以为用户创建一个额外的按钮来表示他们的完成,但用户表示更喜欢完成键入本身来触发此操作。

【问题讨论】:

  • 我应该补充一点,是的,我将 outputmarkupid 设置为 true。

标签: jquery autocomplete wicket jquery-ui-autocomplete wicket-6


【解决方案1】:

Wicket 示例显示了这种确切用法:

    field.add(new AjaxFormSubmitBehavior(form, "change")
    {
        @Override
        protected void onSubmit(AjaxRequestTarget target)
        {
            target.add(label);
        }

        @Override
        protected void onError(AjaxRequestTarget target)
        {
        }
    });

https://github.com/apache/wicket/blob/6ad2f9834e02030a2d5b47ee215276b9be7e5623/wicket-examples/src/main/java/org/apache/wicket/examples/ajax/builtin/AutoCompletePage.java#L117

【讨论】:

    猜你喜欢
    • 2015-04-17
    • 2017-01-22
    • 2011-10-07
    • 2013-08-07
    • 1970-01-01
    • 1970-01-01
    • 2017-11-01
    • 2021-12-01
    • 1970-01-01
    相关资源
    最近更新 更多