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选择
jeecg 框架里面的标签 怎么添加 下拉onchange事件
input file 添加图片预览 绑定onchange执行函数 重复添加不执行onchange函数