Como usar evento onblur , executar uma action JSF e voltar ao campo com Focus
29/10/2009
0
Galera,
To fritando para fazer uma tela que tem um input Text e digitar um valor neste campo.
ao sair no evento onblur chamar uma action que imprime um relatorio direto para impressora e retornar ao mesmo campo para repetir a rotina com outro numero de pesquisa.
Tentei dessa forma:
h:outputText styleClass="rich-label" value="Entre com os dados:" />
event="onblur" >
Ele volta para o campo mas nao executa o relatorio e da um erro porque acredito que deva ter que fazer um submit, mas se dou um submit() ai que nao volta para o campo.
To usando para o submit se atraves do ajax mas mesmo assim perde o foco. so funciona sem submit.
e o relatorio nada , nao imprimi so se eu colocar um link
mas será utilizado um leito de codigo de barra uma pistola magnetica, ela nao vai clicar nesse link.
Não é possivel que não exista algo parecido para web JSF.
da uma força ai por favor, ja tem uma semana que estou nisso.
obrigado
Victor
Victor Lima
Posts
30/10/2009
Dyego Carmo
Nao entendi a sua duvida
Poderia exclarecer ela melhor ?
30/10/2009
Victor Lima
Boa Tarde,
Eu tenho uma tela que contem um componente inputText, eu preciso que quando esse campo perder foco chama uma action, que no meu caso imprime uma etiqueta direto para impressora. Após imprimir o campo inputText deve receber novamente o Foco para emitir uma outra etiqueta, e assim sucessivamente.
Como venho tentando, consegui fazer com que imprimisse direto mas o componente inputText não recebe o focu, isso porque o formulario foi submetido, caso eu tire a linha do codigo que faz com que submeta o formulário o focu voltará ao campo, mas tambem a etiqueta não é impressa.
Não sei se voce ja viu no Delphi, um campo editText que no evento OnExit faz alguma coisa e depois dessa função voce manda dar o EditiText.SetFocus.
Seria assim:
Veja o que fiz até agora onde só esta imprimindo.
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:ui="http://java.sun.com/jsf/facelets"
xmlns:c="http://java.sun.com/jstl/core"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:a4j="http://richfaces.org/a4j"
xmlns:rich="http://richfaces.org/rich">
<script type="text/javascript">
function setFocus()
{
document.getElementById("etiqueta:meuinput").focus();
}
</script>
<body onload="setFocus();">
<ui:composition template="../layouts/template.xhtml">
<ui:define name="content">
<rich:panel style="width:800px;height:300px">
<f:facet name="header">
<h:outputText value="Impressão de Etiquetas"/>
</f:facet>
<a4j:form ajaxSubmit="true" id="etiqueta" reRender="etiquetas">
<h:panelGrid columns="3">
<h:outputText styleClass="rich-label" value="Tipo de Etiqueta" />
<rich:comboBox size="2" label="Tipo de Etiqueta" defaultLabel="Selecione a Etiqueta" id="tipoetiqueta" required="false" value="">
<f:selectItem itemValue="Endereçamento"/>
<f:selectItem itemValue="Simples"/>
<f:validateLength minimum="4" maximum="30" />
</rich:comboBox>
<h:selectOneRadio styleClass="rich-label">
<f:selectItem itemLabel="Numero de Nota Fiscal" itemValue="nota"/>
<f:selectItem itemLabel="Numero do Pedido" itemValue="pedido"/>
<a4j:support event="onclick" reRender="tipo"/>
</h:selectOneRadio>
</h:panelGrid>
<h:outputText styleClass="rich-label" value="Entre com os dados:" />
<h:inputText label="Dados" size="15" name="meuInput" id="meuinput" required="true" value="#{etiquetasController.num_notafiscal}"
onblur="submit()" onsubmit="javascript:setFocus();" reRender="etiquetas" >
<a4j:support event="onchange" action="#{etiquetasController.executarEtiqueta}" immediate="true" focus="meuinput" reRender="etiquetas,etiqueta" ajaxSingle="true" />
<f:validateLength minimum="6" maximum="15" />
</h:inputText>
<c:if test="${not empty etiquetasController.num_notafiscal}">
<br />
<rich:dataTable id="etiquetas" rendered="true" var="item" value="#{etiquetasController.etiquetas}" style="width:400px">
<rich:column id="numped">
<f:facet name="header"><h:outputText styleClass="headerText" value="Fornecimento" /></f:facet>
<h:outputText value="#{item[0]}" />
</rich:column>
<rich:column id="nota">
<f:facet name="header"><h:outputText styleClass="headerText" value="Nota Fiscal" /></f:facet>
<h:outputText value="#{item[9]}" />
</rich:column>
<rich:column id="datanota">
<f:facet name="header"><h:outputText styleClass="headerText" value="Data Nota" /></f:facet>
<h:outputText value="#{item[10]}">
<f:convertDateTime pattern="dd/MM/yyyy" timeZone="America/Sao_Paulo"/>
</h:outputText>
</rich:column>
<rich:column id="nome">
<f:facet name="header"><h:outputText styleClass="headerText" value="Nome Cliente" /></f:facet>
<h:outputText value="#{item[3]}"/>
</rich:column>
</rich:dataTable>
</c:if>
</a4j:form>
</rich:panel>
</ui:define>
</ui:composition>
</body>
</html>
04/11/2009
Dyego Carmo
document.getElementById("meuComponente").focus();
09/11/2009
Fernando Silva
mais ou menos assim:
<h:inputText id="aplicInicial" value="#{fundo.aplicDesejada}">
<a4j:support id="supAplicacao" action="#{ManterSimulacao.limpaValores}" event="onblur"/>
</h:inputText>
09/11/2009
Fernando Silva
mais ou menos assim:
<h:inputText id="aplicInicial" value="#{fundo.aplicDesejada}">
<a4j:support id="supAplicacao" action="#{ManterSimulacao.limpaValores}" event="onblur" focus="aplicInicial"/>
</h:inputText>
22/02/2010
Alexsandro Costa
<script src="<%= request.getContextPath() %>/js/jquery-1.3.2.js" type="text/javascript">
<script type="text/javascript">
jQuery.noConflict();
function setaFocusOnBlur(){
jQuery("#frm_principal\\:inputTeste").focus();
}
jQuery(document).ready(function(){
//esse comando vai setar o focus no onload da tela para o primeiro input:text da tela!
jQuery("input:text:visible:first").focus();
}
</script>
Clique aqui para fazer login e interagir na Comunidade :)