我正在使用Java和Wicket为webapp编写自动完成组件。
当用户选择自动完成列表中的一个选项时,是否有办法处理onchange事件以运行某些代码?我尝试在AutoCompleteTextField中执行此操作:
setOutputMarkupId(true);
add(new AjaxEventBehavior("onchange") {
@Override
protected void onEvent(AjaxRequestTarget target) {
System.out.println(getInput());
}
});
但是getInput方法返回null。 :(
有没有办法对onchange事件做出反应并能够读取用户输入的内容?
感谢您的时间和知识:)
答案 0 :(得分:7)
只有在焦点远离组件时才会触发 onchange
事件。 (这是一个通用的浏览器/ javascript东西。)
您需要将处理程序挂钩到 onkeypress
事件。
您需要的不是AjaxEventBehavior
而是AjaxFormComponentUpdatingBehavior
:
add( new AjaxFormComponentUpdatingBehavior( "onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
System.out.println( "Value: "+field.getValue() );
}
});
虽然它也适用于getInput()
,但通常更高一级(适当地转义并由模型支持)getValue()
更适合。