【发布时间】: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