2013-10-24 141 views
3

我有一個數據表,我已經實現了單元格編輯器功能。我有兩列具有編輯和刪除功能。當我單擊單元編輯器顯示的編輯時,用戶可以編輯這些值並保存它們。同樣,當用戶點擊刪除時,彈出一個對話框,顯示用戶的詳細信息。現在我的問題是當我點擊編輯,當我關注我的輸入字段之一,然後按回車彈出對話框。我不希望這個發生:這是我的JSF代碼:回車鍵打開主面數據表中的對話框

<p:dataTable value="#{mybean.userList}" 
           var="item" 
           id="dataTab" 
           widgetVar="usersTable" 
           tableStyleClass="data" paginator="true" rows="5" 
           filteredValue="#{userController.filteredUsers}" 
           editable="true" 
           rowKey="#{item}" 
           > 
         <p:ajax event="rowEdit" listener="#{mybean.onEdit}" update=":userForm:growl" /> 
         <p:ajax event="rowEditCancel" listener="#{mybean.onCancel}" update=":userForm:growl" /> 
         <f:facet name="header"> 
         <p:outputPanel> 
          <h:outputText value="Search all fields:" /> 
          <p:inputText id="globalFilter"  onkeyup="('usersTable').filter()" style="width:150px" /> 
         </p:outputPanel>  
         </f:facet> 


         <p:column sortBy="#{item.firstName}" filterBy="#{item.firstName}" 
            filterMatchMode="startsWith"> 
          <p:cellEditor> 
          <f:facet name="header"> 
          <h:outputText value="First Name" /> 
          </f:facet> 
           <f:facet name="output"> 
          <h:outputText value="#{item.firstName}" /> 
           </f:facet> 
           <f:facet name="input"> 
       <p:inputText value="#{item.firstName}" style="width:100%"/> 
      </f:facet> 
           </p:cellEditor> 
         </p:column> 
         <p:column sortBy="#{item.lastName}" filterBy="#{item.lastName}" filterMatchMode="startsWith"> 
          <p:cellEditor> 
          <f:facet name="header"> 
          <h:outputText value="Last Name" /> 
          </f:facet> 

         <p:column headerText="Update" style="width:6%"> 
         <p:rowEditor /> 
         </p:column>  


<p:column> 
     <p:commandButton oncomplete="delUserConf.show();" update=":userForm:display" > 
    <f:setPropertyActionListener value="#{item}" target="#{myController.selectedUser}" /> 

    </p:commandButton> 
     </p:column> 

              </p:dataTable> 


    <p:dialog id="modalDialog" 
               header="Delete User?" 
               modal="true" 
               resizable="false" 
               draggable="false" 
               widgetVar="delUserConf" 
               > 

         <h:panelGrid id="display" columns="2" style="width: 150px;"> 
              <h:outputLabel value="Firat Name" style="font-weight: bold"/> 

              <h:outputText value="Last Name" style="border: none"/> 

             </h:panelGrid> 

            </p:dialog> 

任何人都可以讓我知道我怎樣才能避免這種情況謝謝?

+0

我只是'即時'評論,但你有'rowEditor'組件上的'onclick'屬性?如果是這樣,嘗試趕上按下但JavaScript ...或者你可以通過commandLink替換你的commandButton(這只是一個想法) – danRod

+0

如果我正確理解你,問題是命令按鈕響應回車鍵,即使它沒有焦點? – kolossus

+0

@danRod我沒有onEditor的onClick ...我試圖用commandlink替換它,併發生同樣的情況...... – Valla

回答

8

我想這會幫助你。我的建議是你必須把它添加到<p:dataTable value="#{mybean.userList}"...

onkeypress="if (event.keyCode == 13) {return false; }" 

您的包裝形式假設如果<p:dataTable>您的包裝形式是<h:form id="formm"> 然後,你必須編輯您的表單標籤像

<h:form id="formm" onkeypress="if (event.keyCode == 13) {return false; }"> 
+0

你好,有了這個解決方案,輸入按鈕功能被禁用。但是,你怎麼仍然可以使用輸入按鈕但沒有這種行爲? 這是什麼原因? – ProgrammingIsAwsome

相關問題