AjaxFormComponentUpdatingBehavior onkeypress
AjaxFormComponentUpdatingBehavior onkeypress
我有一个项目列表,上面有一个输入字段。
输入字段是一个过滤器,它应该根据您在输入字段中键入的文本过滤列表。
例如:
如果您键入 "th",它应该过滤列表,以便所有项目都应以 "th".
开头
为此我使用 AjaxFormComponentUpadingBehavior("onkeypress").
但这似乎并没有按照应有的方式工作。
当我输入一些东西时,它会清除它并将光标移至输入字段的第一个字母。
我试过onkeyup和onkeydown,它们的作用都一样。
现在我正在对 link 单击进行过滤,但我希望它像 onkeypress 一样无缝。
有办法实现吗?
我正在使用检票口 1。4.x
这是代码:
// Customer Filter input field
customerFilterTxt = new TextField<String>("customerFilterTxt", new PropertyModel<String>(this, "slectedCustomerFilterStr"));
customerFilterTxt.setOutputMarkupPlaceholderTag(true);
customerListViewContainer.add(customerFilterTxt);
// Ajax behavior for customer group filter auto complete input filed
AjaxFormComponentUpdatingBehavior customerGroupFilterBehave = new AjaxFormComponentUpdatingBehavior("onkeypress") {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
List<CustomerGroupBean> filterList = new ArrayList<CustomerGroupBean>();
if(Util.hasValue(selectedCustomerGroupFilterStr)) {
String str = selectedCustomerGroupFilterStr.toUpperCase();
for(CustomerGroupBean group : custGroupList) {
if(group.getRightGroupName().toUpperCase().contains(str)) {
filterList.add(group);
}
}
custGroupListView.setList(filterList);
} else {
custGroupListView.setList(custGroupList);
}
target.addComponent(customerFilterTxt);
target.addComponent(custGroupListViewContainer);
}
};
customerGroupFilterTxt.add(customerGroupFilterBehave);
您正在将输入字段添加到更新方法中的更新调用。这指示 Wicket 替换输入字段,再次呈现文本字段。这就是为什么光标跳到第一个位置的原因。为什么要将文本字段添加到更新中?我看不出有任何必要这样做。您也可能想使用事件 "onkeyup"
.
我有一个项目列表,上面有一个输入字段。
输入字段是一个过滤器,它应该根据您在输入字段中键入的文本过滤列表。
例如: 如果您键入 "th",它应该过滤列表,以便所有项目都应以 "th".
开头为此我使用 AjaxFormComponentUpadingBehavior("onkeypress").
但这似乎并没有按照应有的方式工作。
当我输入一些东西时,它会清除它并将光标移至输入字段的第一个字母。
我试过onkeyup和onkeydown,它们的作用都一样。
现在我正在对 link 单击进行过滤,但我希望它像 onkeypress 一样无缝。
有办法实现吗? 我正在使用检票口 1。4.x
这是代码:
// Customer Filter input field
customerFilterTxt = new TextField<String>("customerFilterTxt", new PropertyModel<String>(this, "slectedCustomerFilterStr"));
customerFilterTxt.setOutputMarkupPlaceholderTag(true);
customerListViewContainer.add(customerFilterTxt);
// Ajax behavior for customer group filter auto complete input filed
AjaxFormComponentUpdatingBehavior customerGroupFilterBehave = new AjaxFormComponentUpdatingBehavior("onkeypress") {
private static final long serialVersionUID = 1L;
@Override
protected void onUpdate(AjaxRequestTarget target) {
List<CustomerGroupBean> filterList = new ArrayList<CustomerGroupBean>();
if(Util.hasValue(selectedCustomerGroupFilterStr)) {
String str = selectedCustomerGroupFilterStr.toUpperCase();
for(CustomerGroupBean group : custGroupList) {
if(group.getRightGroupName().toUpperCase().contains(str)) {
filterList.add(group);
}
}
custGroupListView.setList(filterList);
} else {
custGroupListView.setList(custGroupList);
}
target.addComponent(customerFilterTxt);
target.addComponent(custGroupListViewContainer);
}
};
customerGroupFilterTxt.add(customerGroupFilterBehave);
您正在将输入字段添加到更新方法中的更新调用。这指示 Wicket 替换输入字段,再次呈现文本字段。这就是为什么光标跳到第一个位置的原因。为什么要将文本字段添加到更新中?我看不出有任何必要这样做。您也可能想使用事件 "onkeyup"
.