Trocar as mascaras do input de CPF para CNPJ
Olá pessoal, bom dia...
Então pessoal tenho uma aplicação que possui um <h:SelectOneRadio> com dois itens, um CPF e outro de CNPJ e logo em baixo tenho dois <h:inputMask> um para o CPF e outro para o CNPJ, ja estou colocando a máscara em ambos, e to colocando o campo de CPNJ com o atributo rendered=false" para que ele fique invisível ao usuário.
Daí quando eu selecionasse o radio de CPF ele trocava os inputs, colocando suas devidas mascaras e validações, porém quando eu seleciono o input ele não faz essa troca.
Agradeço muito se alguém me ajudar.
aqui vai a parte do código:
// aqui vai o radio.
<h:selectOneRadio>
<f:selectItem itemLabel="#{messages.ContratoCPF}" itemValue="PF" />
<f:selectItem itemLabel="#{messages.ContratoCNPJ}" itemValue="PJ" />
<p:ajax immediate="true" ></p:ajax>
</h:selectOneRadio>
//Aqui vai os inputs
<p:inputMask id="campoCPF" mask="999.999.999-99"
value="#{dadosLeilaoController.arrematante.documento}"></p:inputMask>
<p:inputMask id="campoCNJP" mask="999.999.999/9999-99"
value="dadosLeilaoController.arrematante.documento" rendered="false" ></p:inputMask>
Agradeço a ajuda desde já.
Então pessoal tenho uma aplicação que possui um <h:SelectOneRadio> com dois itens, um CPF e outro de CNPJ e logo em baixo tenho dois <h:inputMask> um para o CPF e outro para o CNPJ, ja estou colocando a máscara em ambos, e to colocando o campo de CPNJ com o atributo rendered=false" para que ele fique invisível ao usuário.
Daí quando eu selecionasse o radio de CPF ele trocava os inputs, colocando suas devidas mascaras e validações, porém quando eu seleciono o input ele não faz essa troca.
Agradeço muito se alguém me ajudar.
aqui vai a parte do código:
// aqui vai o radio.
<h:selectOneRadio>
<f:selectItem itemLabel="#{messages.ContratoCPF}" itemValue="PF" />
<f:selectItem itemLabel="#{messages.ContratoCNPJ}" itemValue="PJ" />
<p:ajax immediate="true" ></p:ajax>
</h:selectOneRadio>
//Aqui vai os inputs
<p:inputMask id="campoCPF" mask="999.999.999-99"
value="#{dadosLeilaoController.arrematante.documento}"></p:inputMask>
<p:inputMask id="campoCNJP" mask="999.999.999/9999-99"
value="dadosLeilaoController.arrematante.documento" rendered="false" ></p:inputMask>
Agradeço a ajuda desde já.
Fernando Costa
Curtidas 0
Respostas
Randrade
03/08/2015
Se entendi bem o que você precisa, você pode alterar entre os inputs utilizando jquery, mais ou menos assim:
Olhe um exemplo funcional aqui.
Daí, você aplica as mascaras e validações com o java mesmo.
<label>
<input type="radio" name="group1" class="radio1">
</label>
<label>
<input type="radio" name="group1" class="radio2">
</label>
<div class="div1 content">
<p>CPF:</p>
<input placeholder="CPF"/>
</div>
<div class="div2 content">
<p>CNPJ:</p>
<input placeholder="CNPJ"/>
</div>
<script>
$(function () {
$('.radio1').click(function () {
$('.div1').show();
$('.div2').hide();
});
$('.radio2').click(function () {
$('.div2').show();
$('.div1').hide();
});
});
</script>
Olhe um exemplo funcional aqui.
Daí, você aplica as mascaras e validações com o java mesmo.
GOSTEI 0
Fernando Costa
03/08/2015
Opa RAndrade, Sim eu já havia testado assim porém não funcionou, mas estou usando JSF, Ajax e Primefaces, então creio que nem há a nescessidade do Jquery...
se souber um exemplo usando esses dois ai baseados no codigo que eu postei na pergunta eu agradeceria!
se souber um exemplo usando esses dois ai baseados no codigo que eu postei na pergunta eu agradeceria!
GOSTEI 0
Randrade
03/08/2015
Só conheço formas em jQuery ou javascript para fazer isso.
Essas linguagem são de uso Front-End, "não importando" o framework ou linguaagem back-end para o uso delas.
Eu particularmente, não conheço aplicações web hoje, aue não utilizam jQuery para isso. Independente se é em java, C#, Ruby, ASp, etc.
Se quiser postar o código que você disse que não funcionou, ficarei feliz em ajudar.
Essas linguagem são de uso Front-End, "não importando" o framework ou linguaagem back-end para o uso delas.
Eu particularmente, não conheço aplicações web hoje, aue não utilizam jQuery para isso. Independente se é em java, C#, Ruby, ASp, etc.
Se quiser postar o código que você disse que não funcionou, ficarei feliz em ajudar.
GOSTEI 0
Fernando Costa
03/08/2015
<h:selectOneRadio>
<f:selectItem itemLabel="CPF" itemValue="PF" />
<f:selectItem itemLabel="CNPJ" itemValue="PJ" />
<p:ajax immediate="true"></p:ajax>
</h:selectOneRadio>
<p:inputMask id="campoCPF" mask="999.999.999-99"
value="#{dadosLeilaoController.arrematante.documento}"></p:inputMask>
<p:inputMask id="campoCNJP" mask="999.999.999/9999-99"
value="dadosLeilaoController.arrematante.documento"
rendered="false"></p:inputMask>
Considere documento como o campo pra cpf e cnpj.
GOSTEI 0
Randrade
03/08/2015
E o script para ocultar o input? Você chegou a fazer algo com base no que postei acima?
GOSTEI 0
Fernando Costa
03/08/2015
Cara, esse rendered="false" no campo do CNPJ ele esconde o input que inclusive ja ta com a mascara, a solução seria na hora que eu selecionar no meu radio o item CNPJ, ele esconder o do CPF e exibir o do CNPJ. isso que ta difícil de fazer, sei que é bem mais simples que se fosse utilizar JavaScript.
GOSTEI 0
Robson Teixeira
03/08/2015
Bom Tarde,
Para que o que você deseja fazer, segue algumas alterações feitas
e segue o ManagedBean de exemplo
Para que o que você deseja fazer, segue algumas alterações feitas
<h:selectOneRadio value="#{beanCPFCNPJ.opcao}">
<f:selectItem itemLabel="CPF" itemValue="CPF"/>
<f:selectItem itemLabel="CNPJ" itemValue="CNPJ"/>
<p:ajax process="@this" update="resultado"/>
</h:selectOneRadio>
<p:outputPanel id="resultado">
<p:inputMask id="campoCPF" mask="999.999.999-99"
value="#{beanCPFCNPJ.campo}"
rendered="#{beanCPFCNPJ.CPF}"/>
<p:inputMask id="campoCNJP" mask="999.999.999/9999-99"
value="#{beanCPFCNPJ.campo}"
rendered="#{beanCPFCNPJ.CNPJ}"/>
</p:outputPanel>
e segue o ManagedBean de exemplo
@ManagedBean
@ViewScoped
public class BeanCPFCNPJ {
private String opcao;
private String campo;
public boolean isCPF(){
return getOpcao()!=null && getOpcao().equals("CPF");
}
public boolean isCNPJ(){
return getOpcao()!=null && getOpcao().equals("CNPJ");
}
public String getOpcao() {
return opcao;
}
public void setOpcao(String opcao) {
this.opcao = opcao;
}
public String getCampo() {
return campo;
}
public void setCampo(String campo) {
this.campo = campo;
}
}
GOSTEI 0
Fernando Costa
03/08/2015
Opa Robson Passarela blz? cara muito obrigado, a sua explicação realmente foi a que mais aproximou de da certo, pode ser que esteja faltando alguma coisa no meu codigo.
Mas na hora que eu preencho o rádio ele só me renderiza o input do CPF e não muda pro do CNPJ, vou postar aqui o meu código se vc conseguir encontrar o erro e me da um help ai de novo, mas desde já, estou muito agradecido.
e aqui vai o bean
Mas na hora que eu preencho o rádio ele só me renderiza o input do CPF e não muda pro do CNPJ, vou postar aqui o meu código se vc conseguir encontrar o erro e me da um help ai de novo, mas desde já, estou muito agradecido.
<h:selectOneRadio value="#{dadosLeilaoController.opcao}">
<f:selectItem itemLabel="#{messages.ContratoCPF}" itemValue="CPF" />
<f:selectItem itemLabel="#{messages.ContratoCNPJ}" itemValue="CPF" />
<p:ajax process="@this" update="resultado" />
</h:selectOneRadio>
<p:outputPanel id="resultado">
<p:inputMask id="campoCPF" mask="999.999.999-99"
value="#{dadosLeilaoController.arrematante.documento}"
rendered="#{dadosLeilaoController.CPF}"></p:inputMask>
<p:inputMask id="campoCNJP" mask="999.999.999/9999-99"
value="#{dadosLeilaoController.arrematante.documento}"
rendered="#{dadosLeilaoController.CNPJ}"></p:inputMask>
</p:outputPanel>
e aqui vai o bean
private String opcao;
public boolean isCPF(){
return getOpcao()!=null && getOpcao().equals("CPF");
}
public boolean isCNPJ(){
return getOpcao()!=null && getOpcao().equals("CNPJ");
}
//Getter e setter
GOSTEI 0
Fernando Costa
03/08/2015
Opa Robson Passarela blz? cara muito obrigado, a sua explicação realmente foi a que mais aproximou de da certo, pode ser que esteja faltando alguma coisa no meu codigo.
Mas na hora que eu preencho o rádio ele só me renderiza o input do CPF e não muda pro do CNPJ, vou postar aqui o meu código se vc conseguir encontrar o erro e me da um help ai de novo, mas desde já, estou muito agradecido.
e aqui vai o bean
Mas na hora que eu preencho o rádio ele só me renderiza o input do CPF e não muda pro do CNPJ, vou postar aqui o meu código se vc conseguir encontrar o erro e me da um help ai de novo, mas desde já, estou muito agradecido.
<h:selectOneRadio value="#{dadosLeilaoController.opcao}">
<f:selectItem itemLabel="#{messages.ContratoCPF}" itemValue="CPF" />
<f:selectItem itemLabel="#{messages.ContratoCNPJ}" itemValue="CPF" />
<p:ajax process="@this" update="resultado" />
</h:selectOneRadio>
<p:outputPanel id="resultado">
<p:inputMask id="campoCPF" mask="999.999.999-99"
value="#{dadosLeilaoController.arrematante.documento}"
rendered="#{dadosLeilaoController.CPF}"></p:inputMask>
<p:inputMask id="campoCNJP" mask="999.999.999/9999-99"
value="#{dadosLeilaoController.arrematante.documento}"
rendered="#{dadosLeilaoController.CNPJ}"></p:inputMask>
</p:outputPanel>
e aqui vai o bean
private String opcao;
public boolean isCPF(){
return getOpcao()!=null && getOpcao().equals("CPF");
}
public boolean isCNPJ(){
return getOpcao()!=null && getOpcao().equals("CNPJ");
}
//Getter e setter
GOSTEI 0
Robson Teixeira
03/08/2015
Boa Tarde,
Preste atenção nos <f:selectItem de seu <h:selectOneRadio e veja os atributos itemValue, pois acho que ambos estão enviando CPF para o seu ManagedBean.
Att
Robson
Preste atenção nos <f:selectItem de seu <h:selectOneRadio e veja os atributos itemValue, pois acho que ambos estão enviando CPF para o seu ManagedBean.
Att
Robson
GOSTEI 0
Fernando Costa
03/08/2015
Cara muito obrigado deu certinho.... isso foi só desatenção!!!! rsrss
GOSTEI 0