Trocar as mascaras do input de CPF para CNPJ

Java

03/08/2015

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á.
Fernando Costa

Fernando Costa

Curtidas 0

Respostas

Randrade

Randrade

03/08/2015

Se entendi bem o que você precisa, você pode alterar entre os inputs utilizando jquery, mais ou menos assim:

<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

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!
GOSTEI 0
Randrade

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.
GOSTEI 0
Fernando Costa

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

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

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

Robson Teixeira

03/08/2015

Bom Tarde,
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

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.


<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

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.


<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

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
GOSTEI 0
Fernando Costa

Fernando Costa

03/08/2015

Cara muito obrigado deu certinho.... isso foi só desatenção!!!! rsrss
GOSTEI 0
POSTAR