2010-10-04 22 views
8

Tengo un formulario con un botón de enviar, pero esto se implementa mediante la clase AjaxButton de Wicket. Cuando la página HTML representa, Wicket mantiene un método onClick de javascript dinámicamente para ese botón de envío.Cómo llamar a la función jquery después de llamar a wicket ajax botón de enviar

Deseo realizar algunas operaciones usando JQuery después de que el método onClick de Wicket finalice. ¿Cómo hago esto?

Respuesta

8
protected void onClick(AjaxRequestTarget target){ 
    target.appendJavascript("alert('hello');"); 
) 
+1

En appendJavascript si pasa cualquier nombre de la función jQuery, que no está funcionando. Para javascripts simples como alerta está bien. – jgg

+0

si no funciona, probablemente estés haciendo algo mal. * Debería * funcionar de esa manera. (+1) –

10

Usar JQuery o cualquier otra librería de JavaScript funciona como un encanto en wicket si lo haces bien.

Antes que nada debe asegurarse de que la biblioteca esté presente. Generalmente haces eso usando un JavascriptPackageResource.

add(JavascriptPackageResource.getHeaderContribution("/path/to/jquery.js")); 

(Pon esto en un constructor o o inicializador dinámica en onBeforeRender())

Entonces, es necesario asegurarse de que

  1. su componente tiene un id (utilizar Component.setOutputMarkupId(true)) y
  2. está utilizando la identificación correcta en la función JQuery (siempre recupere la identificación a través de Component.getMarkupId())

He aquí un ejemplo con un botón que se vuelve azul cuando se hace clic:

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)); 
+0

¡Gracias por la explicación detallada! –

Cuestiones relacionadas