1

私が取り組んでいるコードには、次のようにJavaScriptイベントをcheckbox追加したい通常の(ajaxなし)があります:onchange

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

に もAjaxEventBehavior("onclick")追加されていcheckboxます。

イベントで呼び出す必要がある関数はonchange、何度もチェックとチェックを外しても、一度だけ呼び出されcheckboxます。これは「ajax」「onclick」イベントと関係があると思います。

チェックされているかチェックされていないfunc(this)ときはいつでも呼び出されるようにする方法は?checkbox

ありがとうございました

4

2 に答える 2

2

イベントに andを追加する代わりに、func(this);関数をAjaxEventBehavior. getPreconditionScript()orとして呼び出すことができます。getSuccessScript()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 に答える