2009 March | TidBits
Mar 27

Coleção de métodos para o plugin validate do jQuery.

Na verdade não é bem uma coleção com dezenas de métodos, a intenção do post é simplesmente mostrar que é possível e fácil criar métodos para o plugin.

Para quem não sabe o que é o validate, recomendo saber do que se trata, você pode ganhar muito tempo no desenvolvimento utilizando o plugin, principalmente para desenvolver interface de back end, com diversas validações. Tem um post do Alexandre Magno antigo, porém muito bom, explicando o que é o plugin, o que faz, como utilizá-lo e um exemplo bem simples de um formulário validado pelo plugin.

Quando se faz o download do validate, ele vêm com uma coleção de médotos, mas alguns que nós precisamos, como verificação de data ( formato dd/mm/aaaa ) e verificação de cpf, não tem.

Alguns métodos que serão postados aqui não fui eu quem fez, queria dar os créditos a quem fez, porém não sei quem foi. Mas… vamos ao ponto, veja como é facil adicionar novos métodos.

Verificação de CPF

O código abaixo adiciona um Método que chamamos de “verificaCPF” :


jQuery.validator.addMethod("verificaCPF", function(value, element) {
	value = value.replace('.','');
	value = value.replace('.','');
	cpf = value.replace('-','');
	while(cpf.length < 11) cpf = "0"+ cpf;
	var expReg = /^0+$|^1+$|^2+$|^3+$|^4+$|^5+$|^6+$|^7+$|^8+$|^9+$/;
	var a = [];
	var b = new Number;
	var c = 11;
	for (i=0; i<11; i++){
		a[i] = cpf.charAt(i);
		if (i < 9) b += (a[i] * --c);
	}
	if ((x = b % 11) < 2) { a[9] = 0 } else { a[9] = 11-x }
	b = 0;
	c = 11;
	for (y=0; y<10; y++) b += (a[y] * c--);
	if ((x = b % 11) < 2) { a[10] = 0; } else { a[10] = 11-x; }
	if ((cpf.charAt(9) != a[9]) || (cpf.charAt(10) != a[10]) || cpf.match(expReg)) return false;
	return true;
}, "Informe um CPF válido."); // Mensagem padrão 

E agora na hora de validar seu formulário, você já pode utilizar o método adicionado:


$("form#cadastro").validate({
	rules: {
		'CampoCPF': {
			required: true,
			verificaCPF: true
		}
	},
	messages: {
		CampoCPF: {
			required: "Digite seu cpf"
			verificaCPF: "CPF inválido"
		}
	},
});	

Verificação de Data (formato dd/mm/aaaa)

Agora o método se chama dateBR e a mensagem padrão (caso não seja colocada outra na hora de usar o validate, será “Informe uma data válida”.


jQuery.validator.addMethod("dateBR", function(value, element) {
	 //contando chars
	if(value.length!=10) return false;
	// verificando data
	var data 		= value;
	var dia 		= data.substr(0,2);
	var barra1		= data.substr(2,1);
	var mes 		= data.substr(3,2);
	var barra2		= data.substr(5,1);
	var ano 		= data.substr(6,4);
	if(data.length!=10||barra1!="/"||barra2!="/"||isNaN(dia)||isNaN(mes)||isNaN(ano)||dia>31||mes>12)return false;
	if((mes==4||mes==6||mes==9||mes==11)&amp;&amp;dia==31)return false;
	if(mes==2 &amp;&amp; (dia>29||(dia==29&amp;&amp;ano%4!=0)))return false;
	if(ano < 1900)return false;
	return true;
}, "Informe uma data válida");  // Mensagem padrão 

Verificação de Data e Hora (formato dd/mm/aaaa hh:mm)


jQuery.validator.addMethod("dateTimeBR", function(value, element) {
	 //contando chars
	if(value.length!=16) return false;
	 // dividindo data e hora
	if(value.substr(10,1)!=' ') return false; // verificando se há espaço
	var arrOpcoes = value.split(' ');
	if(arrOpcoes.length!=2) return false; // verificando a divisão de data e hora
	// verificando data
	var data 		= arrOpcoes[0];
	var dia 		= data.substr(0,2);
	var barra1		= data.substr(2,1);
	var mes 		= data.substr(3,2);
	var barra2		= data.substr(5,1);
	var ano 		= data.substr(6,4);
	if(data.length!=10||barra1!="/"||barra2!="/"||isNaN(dia)||isNaN(mes)||isNaN(ano)||dia>31||mes>12)return false;
	if ((mes==4||mes==6||mes==9||mes==11)&amp;&amp;dia==31)return false;
	if (mes==2 &amp;&amp; (dia>29||(dia==29&amp;&amp;ano%4!=0)))return false;
	// verificando hora
	var horario 	= arrOpcoes[1];
	var	hora 		= horario.substr(0,2);
	var doispontos 	= horario.substr(2,1);
	var minuto 		= horario.substr(3,2);
	if(horario.length!=5||isNaN(hora)||isNaN(minuto)||hora>23||minuto>59||doispontos!=":")return false;
	return true;
}, "Informe uma data e uma hora válida");	

Se alguém tiver (ou fizer) o método de CNPJ (ou algum outro legal que não tem aqui) me manda por e-mail ou posta aqui nos comentários.

[]s

bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Mar 23

Truncar texto em javascript - Abreviar sem cortar palavras

Ví um post do Igor Escobar mostrando uma função de truncar palavras em php. Aí eu lembrei que um dia precisei fazer isso em javascript e resolvi postar tal função.

A função tem dois parâmetros, o texto e o limite de caracteres, e retorna sempre o texto com “…” no final. Veja a função:


function truncar(texto,limite){
	if(texto.length>limite){
		limite--;
		last = texto.substr(limite-1,1);
		while(last!=' ' && limite > 0){
			limite--;
			last = texto.substr(limite-1,1);
		}
		last = texto.substr(limite-2,1);
		if(last == ',' || last == ';'  || last == ':'){
			 texto = texto.substr(0,limite-2) + '...';
		} else if(last == '.' || last == '?' || last == '!'){
			 texto = texto.substr(0,limite-1);
		} else {
			 texto = texto.substr(0,limite-1) + '...';
		}
	}
	return texto;
}

Agora vamos fazer uns testes:


var mensagem = "O técnico do Corinthians até elogiou a atuação de Rodrigo Martins Cintra.";

alert(truncar(mensagem,70));
/* Retorno = O técnico do Corinthians até elogiou a atuação de Rodrigo Martins... */

alert(truncar(mensagem,60));
/* Retorno = O técnico do Corinthians até elogiou a atuação de Rodrigo... */

alert(truncar(mensagem,50));
/* Retorno = O técnico do Corinthians até elogiou a atuação... */

alert(truncar(mensagem,40));
/* Retorno = O técnico do Corinthians até elogiou a... */

alert(truncar(mensagem,30));
/* Retorno = O técnico do Corinthians até... */

alert(truncar(mensagem,20));
/* Retorno = O técnico do... */

alert(truncar(mensagem,80));
/* Retorno = O técnico do Corinthians até elogiou a atuação de Rodrigo Martins Cintra. */

bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Mar 13

11º Encontro Locaweb de Profissionais da Internet

A empresa de hospedagem Locaweb, anualmente organiza um evento com pra reunir os profissionais da internet e falar sobre as novas tendências do mercado.

11º encontro locaweb de profissionais de internet

Nesse ano, o evento ocorrerá em 6 cidades :

14.Abril.2009 - Belo Horizonte - MG
06.Maio.2009 - Salvador - BA
14.Maio.2009 - Curitiba - PR
21.Maio.2009 - Porto Alegre - RS
09.Junho.2009 - Rio de Janeiro - RJ
17.Junho.2009 - São Paulo – SP

A programação conta com :

Tendências de Mercado
Gilberto Mautner, Presidente da Locaweb

Agilidade e qualidade de projetos
Fabio Akita, Evangelista em Rails no Brasil

O Google além das buscas
Executivos do Google

A internet além da web
Executivos da Microsoft

O novo marketing para a sociedade digital
Marcelo Tripoli

Estratégias em sites de busca: SEO & SEM
Martha Gabriel

A inscrição custa 50 reais e pode ser revertido em produtos da locaweb, o que é bem legal pra quem já é cliente.

Eu devo ir no evento de são Paulo.

Notas:

A Locaweb vai fazer um barcamp de Ruby On Rails vem investindo e incentivando no uso da linguagem / plataforma.

Reecentemente anunciou que todos os seus planos de hospedagem agora tem espaço e transferência ilimitados.

[]s

bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Mar 9

Incompatibilidades entre versões do jQuery 1.2.6 e 1.3.2

O site / blog Learning jQuery publicou um post “faça um upgrade dos seus scripts para jQuery 1.3 em 3 passos”, achei interessante, vou traduzir parte do post aqui.

Os seletores [@attribute]

A principal diferença, o que mais está dando problema de incompatibilidade nessa troca de versão é a sintaxe do selector [@attribute] que desde a versão 1.1.4 (agosto de 2007) entrou em desuso, mas até a 1.2.6 ele ainda funcionava, dessa vez tiraram fora mesmo, mas muitos sites e muito plugins ainda utilizavam os seletores assim. veja mais tidbits E pra alterar, corrigir o problema, é bem simples, basta remover o @

Exemplo:

jQuery anterior a 1.1.4


$('a[@rel="excluir"]
$('input[@name^="telefone"]

Versão atual do jQuery


$('a[rel="excluir"]
$('input[name^="telefone"]

:visible em visibility e display

Nessa nova versão :visible trabalha de acordo com a propriedade display do css e não mais com visibility

Exemplo 1:

Considere a div abaixo:


<div id="exemplo" style="display:none">
 Tidbits
</div>

Na Versão 1.2.6 obtemos true com .is(’:visible’) pois ele considerava somento a propriedade visitibility do css, já na versão 1.3.2. obtemos false

Versão 1.2.6
$(’#exemplo’).is(’:visible’) = true

Versão 1.3.2
$(’#exemplo’).is(’:visible’) = false

Exemplo 2:

Considere a div abaixo:


<div id="exemplo2" style="visibility:hidden">
 Tidbits
</div>

Na Versão 1.2.6 obtemos false com .is(’:visible’) pois ele considerava somento a propriedade visitibility do css, já na versão 1.3.2. obtemos true

Versão 1.2.6
$(’#exemplo’).is(’:visible’) = false

Versão 1.3.2
$(’#exemplo’).is(’:visible’) = true

A terceira mudança é na hora de escrever um seletor customizado, agora não é necessário retornar uma string, como era feito até então.

Quem quiser ler a matéria original, veja no Learning jQuery .

[]s

bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Mar 4

Market Share Fevereiro de 2009 - Firefox 3 supera participação de mercado do IE6

A Net Aplications disponibiliza mensalmente relatórios com estatísticas (ou curiosidades) para todos nós, desenvolvedores ou até mesmo clientes.

Os relatórios são muitos, sempre em participação, sendo assim. Qual a participação de cada navegador, de cada sistema operacional, cada buscador, resoluções de tela, etc.

Nesse mês o grande destaque foi que o Firefox 3 superou, em participação de mercado o IE6.

Confira os gráficos referente a fevereiro de 2009:

Navegadores

market share fevereiro 2009 - navegadores

De janeiro pra cá, pouco mudou, mas o que mudou foi o mesmo de sempre, IE cai, Firefox e Safari sobe, e o chrome prova que foi um boom mesmo e cai novamente.

Compare com janeiro de 2009.

Navegadores por versão

Market Share Fevereiro de 2009 - Navegadores por versão

De janeiro pra cá, o IE7 se manteve estável, mas a grande mudança foi a superação do Firefox 3 em relação ao IE6, uma ótima notícia para nós, desenvolvedores.

Compare com janeiro de 2009.

Sistemas Operacionais

Market Share Fevereiro de 2009 - Sistemas Operacionais

De janeiro pra cá, contrariando os últimos meses de época de fim de ano e natal, em fevereiro a participação de mercado do windows sobe enquanto Mac cai.

Compare com janeiro de 2009.

Buscadores

Market Share Fevereiro de 2009 - Buscadores

De janeiro pra cá, nenhuma mudança grande, Google subiu um pouco assim como MSN e o Live Search.

Compare com janeiro de 2009.

Resoluções de Tela

Market Share Fevereiro de 2009 - Resoluções de tela

De janeiro pra cá, as resoluções que mais cresceram foram as do monitores wide: 1680×1050 e 1440×900.

Compare com janeiro de 2009.

Todos os dados são referentes ao último mês (Fevereiro de 2009). Veja os Market Shares antigo para comparar as diferenças com o último mês.

bookmark bookmark bookmark bookmark bookmark bookmark bookmark

Mar 3

[Vídeo] Montagem futurista da microsoft para os próximos 10 anos

O Fabrício que também trabalha aqui na click mandou um link hoje de um vídeo de ficção da Microsoft que mostra como o mundo poderá ser até 2019.

A montagem futurista dá exemplos de várias tecnologias que hoje estão em pesquisas mas que podem, um dia, se tornar realidade:

No site Microsoft Office Labs fala mais sobre o vídeo que chamaram de Future Vision Montage.

Pra completar o post falando sobre variação no tempo, eis uma montagem legal que foi postada no Capinaremos, pedindo para nós analisarmos o presente antes de imaginarmos o futuro.

Analisem o presente

[]s

bookmark bookmark bookmark bookmark bookmark bookmark bookmark