Eu tenho um formulário que contém um inputtext e um commandlink que envia o formulário quando clicado. Tenho notado que, se eu pressionar a tecla Enter depois de inserir o texto no texto de entrada, a página apenas será atualizada. Se eu alterar o commandLink para um commandButton, o formulário será enviado, mas tenho algumas razões para usar o commandLink, portanto, isso não é viável.
Pressionar enter no input com commandlink não envia o formulário
11 Respostas
<div class="form-row">
<div class="form-group col-md-6">
<label>Código</label>
<h:inputText value="#{contagemMateriaPrimaBean.codigoBipagem}"
styleClass="form-control"
pt:placeholder="Código 2D da etiqueta fixada no produto"
required="true" />
</div>
<div class="form-group col-md">
<h:commandLink style="margin-top:32px"
styleClass="btn btn-primary"
onkeyup="if((event.keyCode==13)||(window.event.keyCode==13)){document.getElementById('searchUserBut').click();}">
<i class="fa fa-search" aria-hidden="true" />
<f:ajax event="click" execute="@form" render="@form"
listener="#{contagemMateriaPrimaBean.conferencia}" /> Pesquisar
</h:commandLink>
</div>
</div>
Usa a tag defaultCommand e no target coloca o id do commandLink.
Ela executa um componente command quando o enter for pressionado, no seu caso o commandLink
<h:commandLink id="meuCommandLink" ... />
<p:defaultCommand target="meuCommandLink" />
Oi mike! dessa forma?
<h:commandLink id=“meuCommandLink” style=“margin-top:32px"
styleClass=“btn btn-primary”>
<i>
<f:ajax event=“click” execute=”<a class="mention" href="/u/form">@form</a>" render="<a class="mention" href="/u/form">@form</a>"
listener="#{contagemMateriaPrimaBean.conferencia}" /> Pesquisar
</h:commandLink>
<p:defaultCommand target=“meuCommandLink” /></i>
Deu certo ai?
O defaultCommand esta certo, mas eu acho que esse ajax ai não vai executar, pois o evento é de click, bom… não sei…
Se não funcionou, eu removeria o atributo event
nao jsf nao ta reconhecendo o p:defaultCommand de onde vc esta puxando ele? aqui eu uso assim.
xmlns:f="http://xmlns.jcp.org/jsf/core"
xmlns:h="http://xmlns.jcp.org/jsf/html"
xmlns:ui="http://xmlns.jcp.org/jsf/facelets"
Ele é do primeFaces
eu nao to usando prime rs é por isso entao, existe outra forma?
Tem que estar dentro de um <h:form>
ja esta, só não foi exibido ai no nesse trecho do código
Eu suspeitei, eu lembro de você ter falado um tempo atrás mesmo, mas né…
Você pode executar um método JS ao pressionar enter e então faze-lo da um click no commandLink
Algo desse tipo:
<h:inputText
... onkeypress="submitByEnter(event)">
</h:inputText>
function submitByEnter(e){
if (e.keyCode == 13) {
e.preventDefault();
document.getElementById("form:meuCommandLink").click();
}
}
valeu mike! vou dar uma conferida
