2013-03-19 85 views
2

我使用了Primefaces日曆組件,並且它不在窗體內部工作。當我單擊「在文本框上」時,彈出框會盡快消失。 外部h:form彈出窗口顯示自己,但整體組件仍然不像月/年不可選擇的工作。爲什麼建議?Primefaces日曆組件不在表單中工作

以下是我advSearch.xhtml的facelet其模板爲Master.xhtml

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" 
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"> 

<ui:composition xmlns="http://www.w3.org/1999/xhtml" 
xmlns:ui="http://java.sun.com/jsf/facelets" 
xmlns:h="http://java.sun.com/jsf/html" 
xmlns:f="http://java.sun.com/jsf/core" 
xmlns:p="http://primefaces.org/ui" 
template="/MasterPage/Master.xhtml"> 

<ui:define name="Search"> 

    <h:form id="advSearch" onmousemove="removeExtra()"> 

      <p:layout style="width:1218px;height:558px;" id="layout"> 



       <p:layoutUnit position="center" styleClass="resultDiv"> 

        <div class="advDiv"> 

         <div class="advHeader">Find documents That Have...</div> 
         <div class="advBody"> 

          <table> 
           <tr> 
            <td><h:outputText styleClass="advLabel" value="Subject"></h:outputText></td> 
            <td><h:inputText 
              value="#{advanceSearchController.subject}" 
              styleClass="txtfield" 
              onkeypress="if (event.keyCode == 13) { document.getElementById('advSearch:advButton').click(); return false; }"></h:inputText> 
            </td> 
           </tr> 


           <tr> 
            <td><h:outputText styleClass="advLabel" value="Signed By"></h:outputText></td> 
            <td><h:inputText 
              value="#{advanceSearchController.signBy}" 
              styleClass="txtfield" 
              onkeypress="if (event.keyCode == 13) { document.getElementById('advSearch:advButton').click(); return false; }"></h:inputText></td> 
           </tr> 
           <tr> 
            <td><h:outputText styleClass="advLabel" 
              value="Archived From"></h:outputText></td> 
            <td><p:calendar styleClass="txtfield" mode="popup" 
              navigator="true" yearRange="1900:2015" pattern="MM/dd/yyyy" 
              converter="CalendarDateStringConverter" 
              value="#{advanceSearchController.fromdate}" /></td> 
           </tr> 
           <tr> 
            <td><h:outputText styleClass="advLabel" value="To"></h:outputText></td> 
            <td><p:calendar styleClass="txtfield" mode="popup" 
              navigator="true" yearRange="1900:2015" pattern="MM/dd/yyyy" 
              converter="CalendarDateStringConverter" 
              value="#{advanceSearchController.todate}" /></td> 
           </tr> 
          </table> 
          <h:commandButton id="advButton" styleClass="btn" 
           value="Advanced Search" 
           action="#{advanceSearchController.advanceSearch}" 
           style="background-color:#FEAA41;background-image:none;color:white;font-weight:bold;"></h:commandButton> 
         </div> 
        </div> 

       </p:layoutUnit> 
      </p:layout> 
     </div> 

    </h:form> 

</ui:define> 

任何幫助將不勝感激。

+1

嘗試最低配置(只有內部日曆形式)並檢查它是否仍然無法正常工作。在這裏報告結果。 – 2013-03-19 08:22:38

+0

代碼看起來不錯,但有一件事,我只是看到一個JS函數,你在窗體上調用onmousemove =「removeExtra()」。正如你所說彈出窗口很快消失意味着它來了,然後消失。它表明日曆工作正常很好,但有其他地方是錯誤的。檢查兩件事情(1)當您在日曆欄中單擊後移動光標時,字段是否會消失(意思是單擊並查看它是否消失,如果沒有,則移動光標,然後檢查是否因爲您打電話給您(2)刪除這個removeExtra()函數,然後檢查 – Despicable 2013-03-19 10:00:09

+0

@Matt Handay使用它的h:head和h:body(即不包含在Master.xhtml)。日曆工作正常。 – 2013-03-19 10:43:31

回答

0

代碼似乎很好,但有一件事,我只是看到一個JS函數,你在窗體上調用onmousemove="removeExtra()"
正如你所說彈出快速消失意味着它來了,然後消失。它表明日曆工作正常,但有其他地方是錯的。
請檢查兩件事
(1)當你移動光標點擊在砑光機後場(意思是隻要按一下,看看它是否消失,如果沒有再移動,然後將光標檢查,因爲你叫你的JS功能無法磁場消失onmouseover事件所以它可能是鼠標移動的問題)
(2)刪除此removeExtra()函數,然後檢查

+0

謝謝,真的很有幫助 – 2013-03-19 11:10:38