Javascript – Máscara para nono dígito de celular

Boa noite,

Recentemente enfrentei um problema interessante no trabalho. Foi necessário programar uma máscara com o nono dígito opcional para celulares de São Paulo que contivessem o dígito “9”.

Por exemplos, o campo deveria aceitar (e exibir com uma formatação agradável visualmente) os seguintes valores:

8391-7788

98391-7788

Foi necessário um pouco de javascript para atender a necessidade, deixo abaixo o código (usando JQuery e JQuery Masked Input) que usamos para resolver o problema:

		<script>

			//acrescenta à classe string um método necessário para facilitar
			String.prototype.splice = function( idx, rem, s ) {
				return (this.slice(0,idx) + s + this.slice(idx + Math.abs(rem)));
			};

			$(function(){

				//máscara inicial com o nono digito opcional
				$("#txtCel").mask('9999-9999?9');

				//ao sair do campo, vamos atualizar a máscara
				$("#txtCel").focusout(function(){

					//pegando apenas os digitos
					var cel = $("#txtCel").val().replace('-','').replace(/_/g,'');

					//se tiver 8 digitos
					if(cel.length == 8)
					{
						//vamos colocar o '-' no meio
						cel = cel.splice(4, 0, '-');
						//seta a máscara para aceitar o nono digito
						$("#txtCel").mask('9999-9999?9');
					}
					//caso contrário
					else if(cel.length == 9)
					{
						//deixamos 5 digitos na esquerda
						cel = cel.splice(5,0, '-');
						//seta a máscara para aceitar um digito a menos (caso tenha digitado errado)
						$("#txtCel").mask('99999-999?9');
					}

					//põem o valor no campo
					$(this).val(cel);

				});

			});
		</script>

Fecha a régua e passa a conta! (ou algo assim)

Comunicação e interação entre janelas com Javascript

Fala galera!

Sumi por uns tempos devido a provas na faculdade e um super projeto que demos o sangue pra terminar no prazo.

Some isso a mais algumas aulinhas de CFC (9, cada uma de 5 horas) e desconte o que sobrar do meu banco de horas como blogueiro. =D

Na execução do projeto, precisávamos fazer com que duas janelas de HTML comunicassem uma com a outra. Depois de pensar um pouco, arranjei uma solução.

É só fazer uma janela acessar a outra! Veja como fiz.

PageMethods usando JQuery

Lembram-se do artigo sobre update panels? Nele eu disse que Update Panels são legais, simples, mas custosos. Precisamos ter cuidado ao usá-los.

Imagine que sua aplicação precise fazer uma consulta a um banco de dados, checar um nome e responder ao usuário se este já existe ou não. Usar um update panel apenas para isso vai ficar caro.

Neste artigo vou mostrar como usar PageMethods e JQuery para chegar ao servidor e retornar, sem postback e sem update panel (ou morrer tentando).

Embarque na jornada

Unindo C#, Linq to Objects e estatística

Olá a todos!

Neste semestre tenho aulas de estatísticas básicas. Média, mediana, variância, gráficos… Todas essas coisas lindas da matemática.

Tive um exercício meio “trabalhoso” e percebi que poderia facilitá-lo usando meu amigo computador.

Hm… Diga-me mais!

Delphi: Componentes em Runtime

Olá a todos!

Tenho aulas de Delphi na faculdade esse semestre. É, meu passado me persegue! Pensei que nunca mais faria um “:=” na vida.

Um grande desafio que enfrentamos é a criação de componentes em runtime. Se o usuário quer entrar com 20 valores, devemos criar 20 textboxs para inserção dos valores, por exemplo.

Talvez não seja a maneira mais correta, mas É um jeito de trabalhar. Toda vez temos que gerar a função de novo, uma para cada tipo de componente.

Até que eu tive uma quarta feira sossegada a tarde.

Clique aqui para continuar lendo.

Sobre FrameWorks e Bibliotecas

Se eu fizer tudo isso na mão, vou aprender muito mais!

Background do papo

Fala galera! Ando pouco ativo no blog esses meses. Mas tenho justificativas (como sempre). Nas férias, mais trabalhei do que qualquer outra coisa e nas voltas as aulas, estou sendo introduzido ao mundo da administração.

Conversando com novos colegas de faculdade do primeiro ano, começamos a debater o uso de FrameWorks e bibliotecas, como o ASP.NET e JQuery, respectivamente.

Eu defendo fortemente a utilização dessas ferramentas. Pensei que num curso de bacharelado em sistemas de informação a opinião seria a mesma. Ledo engano.

“JQuery? Notepad e eu contra o mundo!”

Dois companheiros defenderam de forma explosiva, até agressiva, a não utilização de “nenhum código extra ou função, fora o que é da própria linguagem” (sic). As justificativas baseiam-se no aprendizado que temos ao codificar as funções e aprendemos os traquejos de cada pequena necessidade.

Eles tem um ponto importante. Para aprender a linguagem, nada melhor do que passar por dificuldades técnicas. Fiquei ‘aquecido’ com javascript quando criei minha verificação de quantidade de caracteres em textarea.

Por outro lado, se eu tivesse usado a cabeça e utilizado o Spry da Adobe, teria uma solução sexy e pronta, apenas precisando configurar. Eu inventei a roda de novo.

Não sou pago pra aprender a linguagem, sou pago pra resolver problemas

Meu mundinho real

Apesar de encarar frameworks e bibliotecas como pequenos apetrechos que me permitem finalizar um sistema maior, aceito o fato de que usar um DatePicker do Jquery UI vai me “cegar” de alguns pontos da programação. Igualmente faz o .net.

A grande questão é: Não sou pago pra aprender a programar. Por mais rápido que seja fazer algo “na unha”, se não tiver um excelente motivo, é perda de tempo técnico. O sistema como um todo aceita componentes de terceiros para compor a obra. Isso gera padrão, agiliza o desenvolvimento.

Se eu me importar com todos os detalhes de todos os processos, fica faltando a visão geral, o resultado final.

Conclusão pessoal:

Não importa se você adota códigos “externos” ou resolve tudo “em casa”, você terá seus prós e contras. Na internet já existe material o bastante para se discutir até o apocalipse.

Diego Doná prefere utilizar uma biblioteca/framework auxiliar em seu desenvolvimento, quando oportuno, mas se algum dia for necessário fazer tudo na unha… Bom, o mundo é um lugar estranho, às vezes.