Jsf 按Enter键打开“基本面数据表”中的对话框
我有一个datatable,在其中我实现了cell editor特性。我有两列具有编辑和删除功能。当我点击编辑时,单元格编辑器显示,用户可以编辑值并保存它们。同样,当用户单击“删除”时,会弹出一个包含用户详细信息的对话框。现在,我的问题是当我单击“编辑”时,当我关注其中一个输入字段并按“回车”时,会弹出对话框。我不希望出现这种情况:这是我的JSF代码:Jsf 按Enter键打开“基本面数据表”中的对话框,jsf,jsf-2,primefaces,Jsf,Jsf 2,Primefaces,我有一个datatable,在其中我实现了cell editor特性。我有两列具有编辑和删除功能。当我点击编辑时,单元格编辑器显示,用户可以编辑值并保存它们。同样,当用户单击“删除”时,会弹出一个包含用户详细信息的对话框。现在,我的问题是当我单击“编辑”时,当我关注其中一个输入字段并按“回车”时,会弹出对话框。我不希望出现这种情况:这是我的JSF代码: <p:dataTable value="#{mybean.userList}"
<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>
有人能告诉我如何避免这种情况吗?谢谢。我想这会对你有所帮助。我的建议是,您必须将此添加到
的包装器表单中,我只是“动态”注释,但您是否在行编辑器组件上具有onclick
属性?如果是这样的话,试着用javascript捕捉按下的按钮……或者你可以用commandLink替换commandButton(这只是一个想法)。如果我理解正确,问题是命令按钮响应Enter键,即使它没有焦点?@danRod我没有一次点击rowEditor…我尝试用commandlink替换它,同样的情况也发生了……@kolossus是的,当我关注表格中的输入字段编辑数据并按enter键时,对话框会弹出…当我单击delete按钮时通常会弹出对话框…你能让我看看吗知道如何解决此问题…您好,使用此解决方案,输入按钮功能将被禁用。但是,如果没有这种行为,你怎么能让enter按钮仍然工作呢?原因是什么?
onkeypress="if (event.keyCode == 13) {return false; }"
<h:form id="formm" onkeypress="if (event.keyCode == 13) {return false; }">