Как управлять ModalWindow, содержащим форму? - PullRequest
1 голос
/ 23 сентября 2010

Я пытаюсь использовать модальное окно "[MW]" внутри страницы "[MyPage]".

В [MyPage] есть форма и div с идентификатором калитки для [MW]. div не находится в форме [MyPage]. В [MW] есть форма, в которой я могу выполнять поиск для извлечения информации из базы данных.

Дело в том, что все мои формы прекрасно работают в Firefox и Chrome. Но в IE, когда я отправляю форму в [MyPage], она показывает [MW].

Я не знаю, как решить эту проблему, так как я уже разделил modalWindow и форму в [MyPage]. Я пробовал Javascript как onclick = "formInMyPage.submit ()", но он все еще не работает.

1 Ответ

0 голосов
/ 27 сентября 2010

Извините за столь поздний ответ, но я заблудился в коде. Я не писал это, и я все еще начинаю с Wicket.
Я хотел начать все сначала, но я озадачен проблемой, которую не могу понять ... Я создал простую форму:

  • текстовое поле для серийного номера
  • кнопка, которая открывает модальное окно

Открытие и закрытие этого modalWindow не является сложной частью, но отправка значения из modalWindow для вставки его в форму практически невозможна.

Я почти точно следовал инструкциям в Интернете, и я не понимаю, где это пошло не так ...
При тестировании моего кода вот что я получаю:

  • Я выбираю serialNumber из окна modalWindow и нажимаю кнопку «Отправить».
  • modalWindow закрывается, но поле serialNumber в моей форме не обновляется.
  • Я не знаю, что происходит, потому что, когда я устанавливаю этот serialNumber и выбираю другой в modalWindow, его значение исчезает.

Вот код на официальной странице

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

Вот модальное окно

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;
}
...