Manter zeros a esquerda ao digitar número [RESOLVIDO]

Fala aê pessoal!!

Atualmente na aplicação tenho a seguinte situação:

Possuo dois campos texto e alguns checkboxes na minha página. Exemplo: checkbox1…checkboxn; txtCampo1 e txtCampo2.

Tenho uma validação via javascript faz o seguinte:

O valor que digito no txtCampo1 é somado com a quantidade de checkboxes marcados e exibido o valor total em txtCampo2. Exemplo prático:

2 checkbox marcados

txtCampo1 = 000125 (Valor que eu digitei…)

txtCampo2 exibirá 000127

Agora que vem o problema…ele ta até somando, só que está desprezando os zeros á esquerda. E não deveria desprezá-los, pois está exibindo o valor 127. Como eu faria pra manter esses zeros à esquerda?

Galera, desde já agradeço a ajuda!

Olá tiagofla!!!

Tenta usar uma expressão regular para obter os zeros a esquerda do txtCampo1,
e depois que você somar os valores, concatena os zeros a esquerda no resultado:

Algo tipo assim:

var strNum = "000125"; var numSomado = 127; var strZeros = strNum.match(/^0*/)[0]; var strResultado = strZeros + numSomado.toString();
Onde strNum é o valor do seu txtCampo1 e numSomado é o resultado da soma do txtCampo1 com os checkbox que vc falou que conseguiu fazer
ai a expressão regular ta na linha 3 onde:

vai buscar todos os zeros à esquerda do valor do campo txtCampo1.
strNum.match(/^0*/) retorna um array com uma unica posição para o caso dessa espressão regular, ai só coloquei o “[0]” para pegar a primeira posição e retornar o valor para strZeros, depois é só concatenar os zeros com o resultado da soma e pronto! ta feito :smiley:

tenta adaptar esse exemplo ai em cima para dentro de uma função JS do seu código e posta ai pra a gente ver como ficou, sempre tem alguem no forum que descobre uma melhoria :smiley:

mas eu terei que dar um parseInt no strNum pra realizar a soma??

não… porque na verdade ele terá que ser uma String…

se ele for um valor numérico ele não vai permitir zeros à esquerda

Sim!!! vai ter que converter em numérico para realizar a soma, se não, o javascript vai ver que strNum é uma string e em vez de somar com a variável do tipo numérico, ele vai transformar a variável numérica em string e concatenar as duas.

usa a expressão regular em strNum antes de converter o valor para numérico, assim vc não perde os zeros a esquerda, e depois, na hora de concatenar os zeros ao numero somado, usa o .toString() na variável numérica. isso não é obrigatório, mas é uma boa pratica :smiley:

posta parte do seu código ai para a gente ver, ai vamos te ajudando :smiley:

Blz!! Segui a idéia do Thiago e fiz da seguinte forma:

$j('input[id^="deOficio"]').blur(function(){
                    var total;
                    var strZeros;
                    var strResult;
                    if($j('input[id^="deOficio"]').val() && $j('input[id^="deOficio"]').val() > 0 && $j('input[name="selecionado"]:checked').length){
                        strZeros = $j('input[id^="deOficio"]').val().match(/^0*/)[0];
                        total = parseInt($j('input[name="selecionado"]:checked').length, 10) + parseInt($j('input[id^="deOficio"]').val(), 10) - parseInt(1);
                        strResult = strZeros + total.toString();
                    }
                    $j('input[id^="ateOficio"]').val(strResult);
                });

Valeu galera!

Opaaa!!! funcionou?! que legal!!!

aaaahhh

acho que não precisa converter a instrução na linha 07:

para inteiro porque ela já retorna um valor numérico.

não esqueça de marcar o tópico como [RESOLVIDO] caso o problema tenha sido solucionado :smiley: