2015-09-02 47 views
1

我可以單擊我的ModalWindow中的文本框中的文本並進行編輯。當我保存並重復該過程時,我無法單擊文本框中的文本並進行更改。無法在ModalWindow中更改IE 11中的文本框值

這隻發生在IE 11中。我可以單擊X來清除文本框,然後設置一個值,但我不應該這樣做。我不確定我的代碼,IE 11或Wicket中是否存在問題。我的Quickstart使用的是Wicket 7.0.0,但在Wicket 6.18.0中我有類似的行爲。

這裏是我運行IE 11版本:

  • 版本:11.0.9600.17501
  • 更新版本:11.0.15(KB3008923)
  • 產品編號:00150-20000-00002- AA803

下面的步驟是,我和我的檢票快速入門使用:

  1. 在HomePage中,單擊「openWindowLink」
  2. ModalWindow打開。點擊文本框中的文字並進行編輯。點擊保存。
  3. ModalWindow關閉。再次點擊「openWindowLink」。
  4. ModalWindow打開。點擊文本框中的文字,然後嘗試進行編輯。
  5. 注意到您無法單擊文本並獲取光標進行編輯。

這裏是我認爲相關的快速入門的部分:

HomePage.java

@Override 
    public void onInitialize() 
    { 
     super.onInitialize(); 

     final ModalWindow modal = new ModalWindow("modal"); 
     modal.setPageCreator(new ModalWindow.PageCreator() 
     { 
      private static final long serialVersionUID = 1L; 

      public Page createPage() 
      { 
       return new IEModalPage(); 
      } 
     }); 
     add(modal); 

     add(new AjaxLink<Void>("openWindowLink") 
     { 
      private static final long serialVersionUID = 1L; 

      public void onClick(AjaxRequestTarget target) 
      { 
       modal.show(target); 
      } 
     }); 
    } 

HomePage.html

<body> 
     <a wicket:id="openWindowLink">Click to open the modal window</a> 
     <div wicket:id="modal"></div> 
    </body> 

IEModalPage.java

public class IEModalPage extends WebPage 
{ 
    private static final long serialVersionUID = 1L; 
    private String value = "clickme"; 

    @Override 
    public void onInitialize() 
    { 
     super.onInitialize(); 

     Form<Void> form = new Form<Void>("pageForm"); 
     add(form); 

     form.add(new TextField<String>("captureValue", new PropertyModel<String>(this, "value"))); 

     form.add(new AjaxSubmitLink("saveButton") 
     { 
      private static final long serialVersionUID = 1L; 

      @Override 
      public void onSubmit(AjaxRequestTarget target, Form<?> form) 
      { 
       System.out.println(value); 
       ModalWindow.closeCurrent(target); 
      } 
     }); 
    } 
} 

IEModalPage.html

<body> 
    <form wicket:id="pageForm"> 
     Click in the text box and make sure you see a cursor: <input type="text" wicket:id="captureValue" /> 
     <br /> 
     <input type ="submit" value="Save" wicket:id="saveButton" /> 
    </form> 
</body> 
+1

你在http://examples7-apachewicket.rhcloud.com/ajax重現問題/模式窗口?我沒有IE11來測試自己,對不起! –

+0

是的,當我點擊日期文本字段時,它會重現。它第一次工作,第二次不工作。我可以用F5刷新頁面,它會在第一次再次運行。 – JeredM

+0

@ martin-g,該問題只複製使用「顯示模式對話框頁」,所以我懷疑問題是iframe相關。我還注意到,如果我用頁面模式「嘗試2」的窗口「打破」,那麼「顯示帶面板的模式對話框」鏈接也會導致斷開狀態。 此外,我可以標籤到文本框中。似乎只有點擊有問題。 – JeredM

回答

0

解決這種情況下是使用圍繞工作重點的第一個可用文本框。在這個例子中,當用戶使用IE瀏覽器11.在我的基地模式頁我只是添加此對焦功能:

@Override 
public void renderHead(IHeaderResponse response) 
{ 
    response.render(JavaScriptHeaderItem.forScript(
     "if (Object.hasOwnProperty.call(window, 'ActiveXObject') && !window.ActiveXObject) {" + 
     " $(document).ready(function(){$('input[type=text]').first().focus();});" + 
     "}", 
     "IE11Focus")); 
}