Re:JSF - Atualizar campo no onBlur

10 respostas
M

Bom dia,

Você ja tentou faze com outro componente JS, ou tem que ser necessariamente o onblur, tenta outra como o onchange, mas tambem depende do que vc queira.

Espero ter ajudado.

10 Respostas

E

Qual IDE você está usando?
No Netbeans, você pode incluir no onBlur o seguinte código:

var B = document.getElementById(form1.campoB);

var A = document.getElementById(form1.campoA);

B.value=A.value*5;

Não sei se funciona, não cheguei a testar, mas sei que depende do browser que você utilizar para funcionar tb.(Firefox ou IE).

E

Mais um detalhe, coloque o submit() por último, senão o código que sugeri realmente não vai funcionar.

var B = document.getElementById(form1.campoB);

var A = document.getElementById(form1.campoA);

B.value=A.value*5;

submit();

Se esse código não funcionar, é mais ou menos por ai(não cheguei a testar).
Espero ter ajudado…

E

Cara, você não falou em qual IDE(Netbeans ou Eclipse) você está trabalhando.
No seu código JSF teste o seguinte. Se não funcionar é por ai o caminho…

onblur=“var B=document.getElementById(‘form1.campoB’); var A=document.getElementById(‘form1.campoA’); B.value=A.value*5; submit();” immediate=“true” valueChangeListener="#{meuBean.calcularValor}"

M

vc ta usando o framework Ajax4Jsf??
ta usando o a4j:support???

P

Alguém saberia dizer como fazer, qdo um campo mudar o foco, o valor desse campo ir para o servidor usando a4j no eclipse?

P

Olá...
Fiz um esquema meio "genérico", tenta adaptar para seus componentes aí:

na sua página vc teria um input, que acionaria um botão "escondido" que faria a ação, atualizando o valor do outputText:
<h:inputText id="iptInput" size="50"  value="#{nomeDoForm.input}" onblur="btnChamarMetodo.click();" />  
   
<h:commandButton id="btnChamarMetodo" inlineStyle="border:0px; background:#ffffff" action="#{nomeDoForm.metodo}" /> 

<h:outputText id="optOutput" binding="#{nomeDoForm.bindOutput}">
na sua classe, o método chamado pelo botão seria mais ou menos assim:
private OutputTextTag bindOutput;

public void metodo(){
   int valorFinal = getInput()*5;
   bindOutput.setValue(valorFinal);
}

é meio "gambiarra", mas funcionou comigo.

N

Bom dia,

Estou com dificuldade de atualizar um campo, quando, um outro campo perde o foco.

Por ex.: Um campo A recebe um número. Um campo B só de leitura, deve ser o valor do campo A vezes 5.

A dúvida é, como inserir o valor no campo B quando o campo A perder o foco?

No campo A do jsf está assim:

No MeuBean está assim:

FacesContext context = FacesContext.getCurrentInstance();
UIComponent componentA = context.getViewRoot().findComponent("form:componentA");
Integer valor = (Integer) componentA.getAttributes().get("value");
context.getViewRoot().findComponent("form:componentB").getAttributes().put("value", (valor * 5));
context.renderResponse();

Alguém pode me ajudar?

N

MiguelCP e Elisioleon,

Estou tentando fazer isso utilizando somente JSF, mas não estou conseguindo de maneira alguma.

Quando a página é exibida novamente, é como se o campo B não fosse atualizado.

N

ElisionLeon,

Não entendi o porque de saber qual a iDE.

O exemplo que eu dei de multiplicar por 5 foi mais por ser mais simples.

Na verdade, o problema que eu estou enfrentando é: eu tenho dois campos t:inputCalendar, representando data inicial e final. Quando o usuário preencher o campo da data final, um terceiro campo deve conter o valor em dias da subtração desses dois campos.

N

Myfaces :frowning:

Criado 8 de agosto de 2008
Ultima resposta 8 de ago. de 2008
Respostas 10
Participantes 5