Primefaces Appuyez sur Enter exécute bouton de commande
Je suis en train de travailler avec primefaces et j'ai le problème suivant, j'ai une barre d'outils avec plusieurs boutons et des composants comme inputtext et d'autres dans la forme, mais lorsque j'appuie sur la touche Entrée dans certains composant le premier bouton de la barre d'outils est appelé, dans ce cas le bouton de commande "idButtomNuevo" est appelé ainsi parce qu'il est dans la première position.
Mon code:
almacen.xhtml
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui" >
<h:form id="idFormAlmacen" >
<p:focus context="idFormAlmacen"/>
<p:growl id="growl" showDetail="true" life="2500" for="keyAlmacen" globalOnly="true"/>
<p:panel header="Almacen" styleClass="texto-panel"/>
<ui:include src="/pages/logistica/almacen/toolbar_almacen.xhtml"/>
<ui:include src="#{almacenBean.pathbodyAlmacen}" />
</h:form>
<ui:include src="/pages/logistica/almacen/dialogos_almacen.xhtml" />
</ui:composition>
toolbar_almacen.xhtml
<ui:composition xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui">
<p:toolbar>
<p:toolbarGroup align="left" styleClass="panelgrid-css">
<p:commandButton id="idButtomNuevo" title="Nuevo" icon="ui-icon-document" process="@this" value="Nuevo"
actionListener="#{almacenBean.limpiarAlmacen}" update="idFormAlmacen" immediate="true">
<p:resetInput target="idFormAlmacen"/>
</p:commandButton>
<p:commandButton id="idButtomGuardar" title="Guardar" icon="ui-icon-disk" action="#{almacenBean.guardarAlmacen}"
disabled="#{almacenBean.au.btGuardarDisabled}" update=":idFormAlmacen" validateClient="true" value="Guardar"/>
<p:commandButton id="idButtomEliminar" title="Eliminar" icon="ui-icon-trash" actionListener="#{almacenBean.eliminarAlmacen}"
disabled="#{almacenBean.au.btGuardarDisabled}" update="idFormAlmacen" process="@this" immediate="true"
value="Eliminar"/>
<p:commandButton id="idButtomListar" title="Listar" icon="ui-icon-grip-solid-horizontal" process="@this" value="Listar"
actionListener="#{almacenBean.listarAlmacen}" update="idFormAlmacen" immediate="true"/>
<p:commandButton id="idButtomBuscar" title="Buscar" icon="ui-icon-search" value="Buscar"
actionListener="#{almacenBean.buscarAlmacen}" immediate="true">
<p:ajax event="dialogReturn" update="idFormAlmacen"/>
</p:commandButton>
</p:toolbarGroup>
</p:toolbar>
</ui:composition>
pathbodyAlmacen = "/pages/logistica/almacen/crear_almacen.xhtml"
<ui:composition
xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:p="http://primefaces.org/ui" >
<p:panel header="Datos Generales de Almacen" />
<h:panelGrid id="idPanelAlmacen1" columns="3" width="100%" border="0" columnClasses="colC1-T,colC2-T">
<p:outputLabel for="idEmpresa" value="Empresa:" style="margin-right:2px;"/>
<p:inputText id="idEmpresa" style="width:350px;" value="#{almacenBean.alVista.strEmpresa}" readonly="true"/>
<h:outputText value="   "/>
<p:outputLabel for="idCodProveedor" value="Codigo:" style="margin-right:2px;"/>
<p:inputText id="idCodProveedor" value="#{almacenBean.alVista.codigo}" style="width:350px;" required="true"
requiredMessage="Ingrese Codigo ">
<p:clientValidator />
</p:inputText>
<p:message for="idCodProveedor" display="text"/>
<p:outputLabel for="idNombre" value="Nombre:" style="margin-right:2px;"/>
<p:inputText id="idNombre" value="#{almacenBean.alVista.nombre}" style="width:350px;"
required="true" requiredMessage="Ingrese Nombre de Almacen">
<p:clientValidator event="keyup" />
</p:inputText>
<p:message for="idNombre" display="text"/>
</h:panelGrid>
<h:panelGrid id="idPgDirAlmacen" columns="4" width="100%" border="0" columnClasses="colC1-T,colC2-T,colC3">
<p:outputLabel for="idInDirAlmacen" value="Direccion de Almacen:" style="margin-right:2px;" />
<p:inputText id="idInDirAlmacen" style="width:350px;" readonly="true" required="true" value="#{almacenBean.alVista.direccionAlmacen}"
requiredMessage="Ingrese direccion de Almacen"/>
<p:commandButton title="Crear Direccion Almacen" actionListener="#{almacenBean.abrirDireccionAlmacen}" process="@this"
icon="ui-icon-search" >
<p:ajax event="dialogReturn" update=":idFormAlmacen:idPgDirAlmacen"/>
</p:commandButton>
<p:message for="idInDirAlmacen" display="text"/>
</h:panelGrid>
</ui:composition>
merci pour tous
OriginalL'auteur Ronald | 2014-12-03
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème dans mon projet. Pour éviter de le soumettre sur la touche enter appuyez sur j'ai juste fait comme suit.
Au chaque champ inputText ajouté ce code,
OriginalL'auteur Deshani Vimukthika
Ce n'est pas un JSF comportement spécifique, lorsque Entrée est pressée pour la première
<input>
avectype="submit"
est utilisé. Cela a été discuté (voir cette ou cette), je vais mettre ici quelques suggestions à partir de ces fils.Javascript solution:
Utilisation
<h:form id="thisform" onkeypress="if( event.keyCode == 13){event.keyCode=0;}">
sur votre formulaire. Cependant, cela vous évitera d'avoir à tout défaut de commande sur le formulaire, car il s'enclenche en appuyant sur Entrée.Primefaces solution:
Utiliser un bouton factice sur la forme qui ne fait rien, et le définir comme du formulaire de commande par défaut.
Vous êtes les bienvenus.
Cependant, si l'accent est mis sur un bouton et j'appuyez sur entrée dans les deux cas, ne s'appelle pas de l'action de la touche avec la mise au point. Excume moi pour mon anglais
Essayez ceci pour premier exemple:
onkeypress="if( event.keyCode == 13){if(document.activeElement.type == 'text') event.keyCode=0;}"
Merci, mais j'ai essayer avec :
onkeypress="if( event.keyCode == 13){if(document.activeElement.type == 'text') return false;}"
et ça fonctionne avecevent.keyCode=0
ne fonctionne pasOriginalL'auteur Predrag Maric