InputText - Exibir máscara em campo gravado no banco só com números

Olá pessoal!

Tenho um inputText numa página de cadastro que recebe o campo cpf_cnpj. O inputText tem uma máscara definida em JavaScript que aparece no momento em que o usuário digita o valor, mas só os números são gravados no banco. Ou seja, o dado é salvo sem a máscara. Gostaria de saber se é possível exibir o cpf_cnpj com a máscara novamente no inputText em uma página de consulta, já que o campo foi gravado no banco sem ela. Como isso pode ser feito?

Olá @sgrandini!

Sim é possível!

Veja bem, um CPF (sem formatação, conforme está no seu banco) possui até 11 caracteres ; um CNPJ (sem formatação, conforme está no seu banco) possui até 14 caracteres.

Caso você os recupere com menos caracteres, terá de colocar zeros à esquerda até que se atinja o tamanho esperado para cada um.

Feito isto, você precisa pegar este valor recuperado do banco de dados, e com zeros à esquerda (se necessário), e aplicar a formatação desejada.

Você pode escolher fazer a formatação no seu backend e jogar o valor formatado para a tela, ou então receber o valor sem formatação na tela, e, no carregamento da página (onload, por exemplo), realizar a formatação com javascript (veja o codigo abaixo, utilizamos o método “.replace” de uma string para realizarmos a formatação; o regex pega as partes da string, e depois aplica os separadores.

É um código apenas para você ter uma idéia :smiley:

var valorSemFormatacaoCPF = “11122233344”;
var valorFormatadoCPF = valorSemFormatacaoCPF.replace(/^(\d{3})(\d{3})(\d{3})(\d{2})$/, “$1.$2.$3-$4”);



var valorSemFormatacaoCNPJ = “11222333444455”;
var valorFormatadoCNPJ = valorSemFormatacaoCNPJ.replace(/^(\d{2})(\d{3})(\d{3})(\d{4})(\d{2})$/, “$1.$2.$3/$4-$5”);

Espero ter ajudado.

Poste seus resultados!