AutoCompleteField onchange/onselect 未触发

Posted

技术标签:

【中文标题】AutoCompleteField onchange/onselect 未触发【英文标题】:AutoCompleteField onchange/onselect not firing 【发布时间】: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。 【参考方案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

【讨论】:

以上是关于AutoCompleteField onchange/onselect 未触发的主要内容,如果未能解决你的问题,请参考以下文章

javascript onchange onChange OnChange选择

请帮我解决为啥不能进入onchange事件

jeecg 框架里面的标签 怎么添加 下拉onchange事件

input file 添加图片预览 绑定onchange执行函数 重复添加不执行onchange函数

easyui combobox onchange 自动过滤没有了

vue下拉框如何控制onblur和onchange