I have a form with a submit button but this is implemented by Wicket's AjaxButton class. When the HTML page renders Wicket keeps a javascript onClick method dynamically for that submit button.
I want to do some operations using JQuery after Wicket's onClick method completes. How do I do this?
Using JQuery or any other JavaScript library works like a charm in wicket if you do it right.
First of all you need to make sure the library is present. You usually do that using a JavascriptPackageResource.
add(JavascriptPackageResource.getHeaderContribution("/path/to/jquery.js"));
(Put this in a constructor or dynamic initializer or in onBeforeRender())
Then, you need to make sure that
Component.setOutputMarkupId(true)
) andComponent.getMarkupId()
)Here's an example with a button that turns blue when clicked:
add(new AjaxButton("id"){
private static final long serialVersionUID = 1L;
@Override
protected void onSubmit(AjaxRequestTarget target, Form<?> form){
target.appendJavascript(
"$('#" +getMarkupId() +"').css({'background':'blue'})");
}
}.setOutputMarkupId(true));