我有一个wicket应用程序,当textarea中的内容发生变化时,需要通过Ajax保存数据。我可以通过" onchange "轻松完成。内容更改时的DOM事件。但是,当用户删除(通过退格键或删除键)整个内容时, onchange 事件不会被触发。哪个事件被触发?
我尝试了 oninput , onkeyup 和 onchange 。所有这些都有效,直到剩下至少1个字符。
Wicket特定信息:版本1.5。文本区域添加到Panel上,并将其添加到DefaultDataTable。因此组件不会直接添加到表单中。 TextArea连接到PropertyModel
final TextArea commentsTa = new TextArea("commentsTa", new PropertyModel<String>(dataObject, "property1"));
commentsTa.setOutputMarkupId(true);
commentsTa.setRequired(true);
commentsTa.setOutputMarkupPlaceholderTag(true);
commentsTa.add(new AjaxFormComponentUpdatingBehavior("onchange") {
@Override
protected void onUpdate(AjaxRequestTarget target) {
System.out.print("Starting onchange.... ");
System.out.print("onchange: " + commentsTa.getConvertedInput());
}
});
更新
我从上面的代码中删除了commentsTa.setRequired(true);
,然后就开始工作了。我想原因是Wicket强制执行验证,因此onchange事件会被触发。