1

在我正在处理的代码中,有一个普通的(无 ajax)checkbox我想将 JavaScriptonchange事件附加到它,例如:

checkbox.add(new AttributeAppender("onchange", Model.of("func(this);"), ""));

还有一个AjaxEventBehavior("onclick")添加到checkbox.

即使我多次onchange选中和取消选中,事件必须调用的函数也只调用一次。checkbox我猜这与“ajax”“onclick”事件有关。

如何在选中或未选中func(this)时进行调用?checkbox

谢谢

4

2 回答 2

2

可能您可以将func(this);函数称为AjaxEventBehavior. getPreconditionScript()or ,而不是在事件上getSuccessScript()添加 and 。AttributeAppenderonchange

看看 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);";
     }
}
于 2012-05-07T10:22:10.447 回答
2

关于我对另一个答案的评论,这是我建议使用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;
         }
      };
    }
}
于 2012-05-08T13:44:56.667 回答