Publicidade

Lomadee, uma nova espécie na web. A maior plataforma de afiliados da América Latina.

quinta-feira, 3 de janeiro de 2008

Função JavaScript para formatação de números inteiros

Hoje pela manhã pediram-me que alterasse um campo de formulário em um sistema. O usuário queria que, ao digitar um valor inteiro, o campo inserisse automaticamente os separadores de milhar (os pontinhos a cada 3 números... d'oh!).

Já dizia Lavoisier, na Internet nada se cria e nada se perde, tudo se copia. Tá, ele não disse exatamente isso...

Bem, lá fui eu ao Google procurar algo pronto que me ajudasse. Contudo, por incrível que pareça, não consegui encontrar uma função JavaScript que fizesse isso. Não sei se ninguém precisou antes de mim ou se eu é que não consegui encontrar, mas resolvi a situação adaptando uma função para formatação de moeda. Aí está:
//-----------------------------------------------------
//Funcao: formatarNumeroInteiro
//Sinopse: formata o número inteiro digitado, inserindo os separadores de milésimos
//Parametro:
// objTextBox : Objeto (TextBox)
// SeparadorMilesimo : Caracter separador de milésimos
// e : Evento
//Retorno: Booleano
//Autor: Vinícius Aragão Costa - http://vinicosta.blogspot.com
//Baseado na função MascaraMoeda() de Gabriel Fróes - www.codigofonte.com.br
//-----------------------------------------------------
function formatarNumeroInteiro(objTextBox, SeparadorMilesimo, e){
var sep = 0;
var key = '';
var i = j = 0;
var len = len2 = 0;
var strCheck = '0123456789';
var aux = aux2 = '';
var whichCode = (window.Event) ? e.which : e.keyCode;
if (whichCode == 13) return true;
key = String.fromCharCode(whichCode); // Valor para o código da Chave
if (strCheck.indexOf(key) == -1) return false; // Chave inválida
len = objTextBox.value.length;
for(i = 0; i < aux =" '';" len =" aux.length;" len ="=" value =" '';"> 0 && len <= 3) objTextBox.value = aux; if (len > 3) {
aux2 = '';
aux2 += SeparadorMilesimo;
for (j = 0, i = len - 3; i >= 0; i--) {
if (j == 3) {
aux2 += SeparadorMilesimo;
j = 0;
}
aux2 += aux.charAt(i-1);
j++;
}
objTextBox.value = '';
len2 = aux2.length;
for (i = len2 - 1; i >= 0; i--)
objTextBox.value += aux2.charAt(i);
objTextBox.value += aux.substr(len - 3, len);
// Um bug ainda não solucionado insere um . no início do número para valores com mais de 6 dígitos
// Essa pequena gambiarra resolve o problema por enquanto
// Se encontrar a solução, por favor informe ao autor
if(objTextBox.value.charAt(0)==SeparadorMilesimo){
objTextBox.value=objTextBox.value.substr(1,objTextBox.value.length);
}
}
return false;
}
Como fiz correndo, tem uma pequena gambiarra nas últimas linhas que eu pretendo um dia substituir pela solução mais elegante. Mas o importante é que funciona! Use a vontade, peço apenas a gentileza de manter os créditos. Eis um exemplo de uso:
onkeypress="return(formatarNumeroInteiro(this,'.',event))"

_\\//

quarta-feira, 2 de janeiro de 2008

Cadê os DVDs do desenho da Liga da Justiça?

De folga ontem em casa, pude curtir meu programa de TV predileto, o desenho da Liga da Justiça. Seguramente o melhor programa de TV já produzido em todos os tempos, principalmente em sua encarnação "Sem Limites". Por que digo isso? Vamos aos fatos:

Fidelidade aos quadrinhos: a caracterização dos personagens, as origens, as personalidades, tudo no desenho foi inspirado nos quadrinhos com uma fidelidade poucas vezes vista numa adaptação a outro meio. Com raras exceções, os personagens do desenho são idênticos aos dos gibis. E mesmos as exceções apenas acrescentam pontos ao programa, como no caso do relacionamento entre a Mulher-Gavião e o Lanterna Verde John Stewart, e a formação da Liga por Batman e Superman (nos quadrinhos, ambos se tornaram membros da Liga posteriormente).

Histórias para crianças, mas não infantilizadas: costumo assistir o desenho junto com minha filha de 3 anos. Claro que eu entendo um pouco mais do que ela, mas ambos nos divertimos. As histórias foram claramente escritas para agradar toda a família, e envolvem mistério, suspense, romance, heroísmo, um pouco de história e mitologia, além de muita (mas muuuita mesmo) ação.

Diálogos marcantes: os personagens do programa são realistas, e, como na vida real, cometem erros, irritam-se, choram, riem. E discutem! As broncas que o Batman dá no Superman são memoráveis. Não esqueço do episódio de ontem, em que o morcego diz para a Mulher-Maravilha: "Se eu deixar o Superman me dar idéias de novo, me bata com força!", antes de pular em um tubo de explosão atrás do Órion.

Cronologia: a história do universo dos desenhos segue a mesma cronologia desde a série do Batman, passando pelo desenho do Superman, Batman do Futuro, Liga da Justiça e Liga da Justiça Sem Limites, além de participações e citações em e para outras séries, como Jovens Titãs, Projeto Zeta e Super Choque ("Static Shock", no original). O melhor exemplo é o episódio em que a Liga enfrenta sua versão de outra dimensão (uma versão do Sindicato do Crime da Amérika do universo de antimatéria). Vários episódios depois, já na versão Sem Limites, esse evento é usado por Amanda Waller para justificar a criação do Projeto Cadmus, que deveria proteger o mundo de um possível ataque da Liga.

Liga da Justiça Sem Limites: o ponto alto da série é, sem sombra de dúvida, a 1ª temporada da versão Sem Limites. Agora uma força mundial com centenas de membros, todos velhos conhecidos dos quadrinhos, a Liga enfrenta a ameaça do Projeto Cadmus, do qual já falei acima. O Cadmus é influenciado por Lex Luthor para destruir a Liga, mas sem saber o próprio Luthor está sendo controlado por Brainiac. Só nos últimos episódios os heróis descobrem toda a verdade e conseguem frustrar os planos de Cadmus-Luthor-Brainiac. Destaque para o episódio Força-Tarefa X ("Task Force X"), onde o satélite da Liga é invadido com sucesso pelo Esquadrão Suicida, numa história de espionagem digna de James Bond com super-poderes!

Por tudo isso, reafirmo: esse é o melhor programa de TV de todos os tempos. Por isso não entendo: por que não foram lançados ainda no Brasil os DVDs das temporadas completas?? Saíram apenas alguns episódios em discos simples. Tenho quase todos os episódios gravados da TV (faltam só dois, reprise por favor, seu Sílvio), mas essa obra-prima merece um lugar de destaque na estante. E aí Warner do Brasil, cadê os DVDs do desenho da Liga da Justiça?

_\\//

Bye, bye Netscape

A America Online (AOL), atual dona do navegador Netscape, anunciou que o produto será descontinuado em fevereiro. Desde 1º de janeiro as diferentes versões do browser não recebem mais suporte e atualizações de segurança.

O Netscape foi um dos responsáveis pela popularização da internet na década de 1990, mas depois de perder a guerra para o Internet Explorer viu seus usuários diminuírem até uma participação irrisória do mercado. A Netscape Communications, desenvolvedora original do navegador, foi comprada pela AOL a 9 anos.

A AOL recomenda aos seus usuários que migrem para o Firefox, sugestão apoiada por esse blogueiro.

_\\//

Já vai tarde!

Ralf Shumacher reconheceu que não estará no grid da F1 em 2008. Segundo o diário motorsport-total.com, após 11 anos atrapalhando... digo, correndo, na categoria, o alemão reconhece que a essa altura não conseguirá mais um assento para esse ano. O irmão mais novo e muuuuito menos bem sucedido de Michael Shumacher conquistou 6 vitórias na F1, todas pela Williams, e ainda não sabe onde pretende xaropar... digo, atuar, em 2008, mas já descartou o automobilismo americano, Le Mans e Rally Dakar.

Não esquenta Ralf, tenho certeza que muitas categorias já o descartaram também! Desse membro da família Shumacher a Fórmula 1 não sentirá absolutamente nenhuma falta. Reconhecidamente o piloto mais antipático da F1 atual, dizem que nem mesmo seu irmão o suportava. Sua antipatia só rivaliza com seu "talento" na pista. Como disse no título, já vai tarde! E tomara que leve o Fisichella junto com ele!

_\\//

Calendário oficial da F1 em 2008

Confirmado desde outubro do ano passado pela FIA, o calendário de 2008 da F1 terá 18 provas, uma a mais que em 2007, apesar da saída de Indianápolis. As novidades são a corrida de rua em Valência, o novo GP da Europa, e Cingapura, a primeira corrida noturna da história da F1. O campeonato começa em 16/3 na Austrália, e pelo terceiro ano seguido encerra-se no Brasil, em 2/11. Confira:

16/03: Austrália - Melbourne
23/03: Malásia - Sepang
06/04: Bahrain - Sakhir
27/04: Espanha - Barcelona
11/05: Turquia - Istambul
25/05: Mônaco - Monte Carlo
08/06: Canadá - Montreal
22/06: França - Magny-Cours
06/07: Inglaterra - Silverstone
20/07: Alemanha - Hockenheim
03/08: Hungria - Hungaroring
24/08: Europa - Valência
07/09: Bélgica - Spa-Francorchamps
14/09: Itália - Monza
28/09: Cingapura - Cingapura
12/10: Japão - Fuji
19/10: China - Xangai
02/11: Brasil - Interlagos

_\\//