在我的工作有一个正常的一个代码(没有AJAX) checkbox
,而我想追加的JavaScript onchange
事件,它喜欢:
checkbox.add(new AttributeAppender("onchange", Model.of("func(this);"), ""));
还有一个AjaxEventBehavior("onclick")
添加到该checkbox
。
必须由被调用的函数onchange
事件被称为只有一次,即使我检查并取消checkbox
多次。 我猜测这与在“AJAX”的“onClick”事件有关。
如何使func(this)
称为每当checkbox
选中或取消选中?
谢谢
可能是你可以打电话给你的func(this);
功能作为AjaxEventBehavior. getPreconditionScript()
AjaxEventBehavior. getPreconditionScript()
或getSuccessScript()
的,而不是添加和AttributeAppender
上onchange
事件。
看看http://wicket.apache.org/apidocs/1.5/org/apache/wicket/ajax/AbstractDefaultAjaxBehavior.html#getPreconditionScript ()
你AjaxEventBehavior
将类似于此:
new AjaxEventBehavior("onclick") {
protected void onEvent(AjaxRequestTarget target) {
System.out.println("ajax here!");
}
protected CharSequence getSuccessScript() {
return "func(this);";
}
}
至于我对对方的回答意见,这里是我建议使用AjaxCallDecorator
new AjaxEventBehavior('onclick'){
protected void onEvent(AjaxRequestTarget target) {
//call your onclick handling logic here
}
protected IAjaxCallDecorator getAjaxCallDecorator(){
return new IAjaxCallDecorator(){
public CharSequence decorateScript(Component component,
CharSequence script){
//prepend your javascript call to ajax server call
return "func(this);"+script;
}
public CharSequence decorateOnSuccessScript(Component component,
CharSequence script){
return script;
}
public CharSequence decorateOnFailureScript(Component component,
CharSequence script){
return script;
}
};
}
}