2010-09-23 3 views
1

J'essaie d'utiliser un modalwindow "[MW]" dans une page "[MyPage]".Comment gérer une ModalWindow contenant un formulaire?

Dans [MyPage], il y a un formulaire et un div ayant un ID de portillon à [MW]. Le div n'est pas sous la forme de [MyPage]. Dans [MW], il y a un formulaire dans lequel je peux faire des recherches pour récupérer des informations d'une base de données.

Le fait est, toutes mes formes fonctionnent bien dans Firefox et Chrome. Mais dans IE, quand je soumets le formulaire dans [MyPage], il montre le [MW].

Je ne sais pas comment résoudre ce problème puisque j'ai déjà séparé le modalWindow et le formulaire dans [MyPage]. J'ai essayé Javascript comme onclick = "formInMyPage.submit()" mais ça ne marche toujours pas.

+0

Il est difficile d'envisager une solution à ce problème sans voir un code. –

Répondre

0

Désolé de répondre si tard mais je me suis perdu dans le code. Je ne l'ai pas écrit et je commence toujours avec Wicket.
Je voulais recommencer depuis le début, mais je suis perplexe avec un problème que je ne peux pas l'air de comprendre ... J'ai créé une forme simple:

  • un champ de texte pour un numéro de série
  • une bouton qui ouvre un modalWindow

L'ouverture et la fermeture de modalWindow ne sont pas la partie la plus difficile, mais l'envoi d'une valeur à partir de modalWindow pour l'insérer dans le formulaire est presque impossible.

J'ai suivi presque exactement tutoriels sur Internet et je ne comprends pas où il a mal tourné ...
Lors du test de mon code, ce que je reçois:

  • je choisis un serialNumber de la modalWindow et je clique sur le bouton "Envoyer".
  • La modalWindow se ferme mais le champ serialNumber de mon formulaire n'est pas mis à jour.
  • Je ne sais pas ce qui se passe parce que quand je mets ce serialNumber et en sélectionne un autre dans la fenêtre modalWindow, sa valeur disparaît.

Voici un code dans la page officielle

serialNumber = new TextField("serialNumber"); 
    modalMateriel = new ModalWindow("modalMateriel"); 


    modalMateriel.setContent(new ModalWindowMateriel(modalMateriel.getContentId()){ 
     public void onSave(AjaxRequestTarget ajaxRequestTarget){ 
      ajaxRequestTarget.addComponent(serialNumber); 
      modalMateriel.close(ajaxRequestTarget); 
     } 
    }); 


    modalMateriel.setInitialWidth(1000); 
    modalMateriel.setWidthUnit("px"); 
    modalMateriel.setInitialHeight(450); 
    modalMateriel.setHeightUnit("px"); 
    modalMateriel.setTitle(getString("ManageRMA_modal_materiel_title")); 
    modalMateriel.setCssClassName(ModalWindow.CSS_CLASS_GRAY); 
    addOrReplace(modalMateriel); 


    serialNumber.setEnabled(false); 
    serialNumber.setOutputMarkupId(true); 
    form.addOrReplace(serialNumber); 


    form.addOrReplace(new AjaxLink("showModalMaterielButton") { 
      @Override 
      public void onClick(AjaxRequestTarget ajaxRequestTarget){ 

       ajaxRequestTarget.appendJavascript("Wicket.Window.unloadConfirmation = false;"); 
       modalMateriel.show(ajaxRequestTarget); 
      } 
     }.setVisible(true)); 

Voici la fenêtre modale

private String serialNumberRecherche; 

public ModalWindowMateriel(String id){ 
    super(id); 

    Form form = new Form("formMaterielsConsultation"); 
    List<String> list = new ArrayList<String>(); 
    list.add("1"); 
    list.add("11"); 
    list.add("111"); 
    list.add("1111"); 
    list.add("11111"); 
    form.addOrReplace(new DropDownChoice("serialNumberRecherche",new PropertyModel(this,"serialNumberRecherche"),list)); 


    //The submit button which aim is ti upDate "serialNumber" in the formal page 
    AjaxButton button = new AjaxButton("Envoyer"){ 

     protected void onSubmit(AjaxRequestTarget ajaxRequestTarget, Form form) { 
      onSave(ajaxRequestTarget); 
     } 
    }; 

    form.add(button); 
    add(form); 

} 


public abstract void onSave(AjaxRequestTarget ajaxRequestTarget); 

public String getSerialNumberRecherche() { 
    return serialNumberRecherche; 
} 

public void setSerialNumberRecherche(String serialNumberRecherche) { 
    this.serialNumberRecherche = serialNumberRecherche; 
} 
Questions connexes