quinta-feira, 18 de outubro de 2012

Os eventos da Tag "A" - Abordagem jQuery (Events)

Listagem da Script HTML


A abordagem para explicar estes eventos serão feitas sob o ponto de vista da Biblioteca jQuery, pois ela possui um modelo muito eficiente para lidar com eventos.

Ao executarmos a script, temos a tela:


Passe o mouse sobre os números à esquerda da tela, e clique em um deles (por exemplo o 3):


Ao passar o mouse (mouseover), é mostrada a posição Y do eventos abaixo dos números.

Ao clicar em 3 (ou qualquer número da esquerda), aparece o display do comando alert do javascript.

Posteriormente ...

É mostrada a posição Y do click (mousedown) e o conteúdo do atributo rel (Reg3).

Em jQuery, o click é suprido pelo evento mousedown.

quinta-feira, 27 de setembro de 2012

Expressões Regulares em Javascript (Regular Expressions)

Apostila muito interessante sobre situações comuns de utilização de Linguagens Web em que é preciso fazer testes em Javascript para atender às boas e melhores práticas de programação.

Os exemplos se referem às situações práticas enfrentadas por empresas de desenvolvimento de produtos para Web.

Ela é completamente freeware, pois esta é a nossa intenção: a difusão do conhecimento, principal finalidade da rede de Blogs Blogazine.

Esta é a versão 6.



Baixar a Apostila

quarta-feira, 26 de setembro de 2012

Javascript e expressões regulares na introdução de datas

A entrada de datas também é algo bem problemático, e alguns desenvolvedores tentaram solucionar apresentando o calendário logo que o campo INPUT correspondente recebe o foco. No entanto, em se tratando de datas muito passadas, a pessoa tem que voltar anos e meses neste calendário (data de admissão, data de nascimento, data de adesão e etc). Neste caso, é preciso digitar a data.

Por esta razão, construímos uma função javascript para checagem da data campo a campo:


function nome_onChange(o){
var str = o.value;
var ori = str;

// Teste de caracteres estranhos
var RegExp = /[\d|\-|\+](\.|\,|\;|\:|\'|\"|\!|\@|\#|\$|\%|\¨|\&|\*|\(|\)|\_|\-|\+|\=|\s|\{|\}|\`|\´|\^|\~|\[|\])/;
var ar = str.match(RegExp);
if( ar != null ) {
// caracter detectado
str = str.replace(ar[1],'/');
o.value = str;
}
var RegExp = /^(\d{1,2})\/(\d{1,2})\/(\d{1,4})|(\d{1,2})\/(\d{1,2})|(\d{1,2})$/;
var ar = ori.match(RegExp);
if( ar != null ) {
// caracter detectado
window.status = ar[1]+"-"+ar[2]+"-"+ar[3]+"-"+ar[4]+"-"+ar[5]+"-"+ar[6];
// Só dia
if( ar[6] != "" ){
if( parseInt(ar[6]) > 31 ){ alert("Dia inválido");}
} else {
// Dia e mês
if( ar[4] != "" ){
if( parseInt(ar[4]) > 31 ){ alert("Dia inválido"); }
if( parseInt(ar[5]) > 12 ){ alert("Mês inválido"); }
} else {
// Dia, mês e ano
if( ar[1] != "" ){
if( parseInt(ar[1]) > 31 ){ alert("Dia inválido"); }
if( parseInt(ar[2]) > 12 ){ alert("Mês inválido"); }
if( parseInt(ar[3]) > 2999 ){ alert("Ano inválido"); }
}
} // do if( ar[4] ...
} // do if( parseInt(ar[6]) ...
} // do if( ar != ...
}

E no HTML colocamos o código de INPUT:

<input name="Data" id="Data" type="text" size="10" onKeyUp="nome_onChange(this);">







segunda-feira, 24 de setembro de 2012

Javascript e expressões regulares na introdução de números

Uma das situações que pegam em um INPUT de números decimais em formulários HTML é a questão da entrada de números com parte decimal.

Em nosso caso vamos evitar que o usuário digite um número com separadores de milhar, e substituir o ponto decimal "." por vírgula, para evitar problemas posteriores com o formato internacional comumente aceito.

Formulário de INPUT

O formulário contém um campo de Input com um evento para processamento das teclas APÓS serem liberadas após pressionadas:


 <form name="frm" method="post" action="prg.asp">
<input name="nome" id="nome" type="text" size=10 onKeyUp="nome_onChange(this);">
<input type="submit" value="OK">
</form>


A cada tecla liberada, é chamada a função javascript nome_onChange:



function nome_onChange(o){
var str = o.value;
window.status = str;
// Teste de ponto
var RegExp = /(\.)/;
var ar = str.match(RegExp);
if( ar != null ) {
if( ar[1] == "." ) {
// Ponto decimal detectado
str = str.replace(/\./g,',');
o.value = str
}
}
// Teste de vírgula
var RegExp = /\,[\d]{1,}(\,)/;
var ar = str.match(RegExp);
if( ar != null ) {
if( ar[1] == "," ) {
// Vírgula detectada
str = str.replace(/\,$/g,'');
o.value = str
}
}
// Teste de caracteres estranhos
var RegExp = /[\d|\-|\+][\'|\"|\!|\@|\#|\$|\%|\¨|\&|\*|\(|\)|\_|\-|\+|\=|\s|\{|\}|\`|\´|\^|\~|\[|\]]/;
var ar = str.match(RegExp);
if( ar != null ) {

// caracter detectado
str = str.replace(/.$/g,'');
o.value = str

}
}

Esta função checa, a cada tecla liberada se foi digitada uma vírgula "," ou ponto "." decimal, fazendo a troca no momento devido.









quarta-feira, 22 de agosto de 2012

Expressões regulares e replace em ASP

Em ASP o uso de expressões regulares é bem diferente e confuso em relação ao metódico e coerente Javascript.

A seguir, um exemplo de Replace de caracteres acentuados muito útil:


<%
Dim RegEx
Set RegEx = New RegExp
RegEx.Global = True
RegEx.IgnoreCase = True
'Set Resp = RegEx.Execute("olás")
Texto = "olás lilás e olés e olós"
'* Inicio funcional
carac = "á,Á,é,É,í,Í"
codigo = "&aacute;,&Aacute;,&eacute;,&Eacute;,&iacute;,&Iacute;"
arrCar = split(carac,",")
arrCod = split(codigo,",")
i = 0
For Each x in arrCar
Response.write(x&","&i)
RegEx.Pattern = arrCar(i)
Texto = RegEx.replace(Texto, arrCod(i))
i = i + 1
Next
'* Fim funcional
Response.Write "<textarea cols=80 rows=5>"&Texto&"</textarea>"
%>

segunda-feira, 23 de julho de 2012

Javascript na implementação do padrão RTF

Estamos disponibilizando aqui uma biblioteca Javascript, em conjunto com um tutorial explicando como implementar o padrão RTF na composição de textos via programação.

O intuito é, além de prover uma alternativa para as macros de Word, explicar o que existe por detrás do padrão RTF. As macros do Word vem encontrando oposição dos Firewalls, anti-virus e congêneres. A biblioteca utiliza o framework jQuery (freeware).

Baixe o Tutorial:

http://www.4shared.com/office/W_Ol_4_3/Manual_RTF_Javascript.html?

Baixe a Biblioteca:

http://www.4shared.com/document/4B6m8Eax/jqueryrtf-asp.html?

Baixe o manipulador de post (rtf.asp):

http://www.4shared.com/get/hKN9hy8P/rtf.html

A biblioteca jQuery está em www.jquery.com.

Quaisquer dúvidas, poste um comentário neste blog.

quarta-feira, 23 de maio de 2012

Configurar dois roteadores em cascata - LAN - WAN


A ligação de roteadores entre si implica em provável complicação na geração de endereços IP dentro da rede interna. Para os leigos, os endereços IP pouco significam, e até para os mais instruídos usa-se a solução DHCP sem analisar contexto.

Termos

Os termos foram explicados no post anterior, mas vamos repetir, até para que você possa imprimir este tutorial..

Modem - No caso da Internet doméstica, é o nosso conector com o provedor. É como se fosse nosso aparelho telefônico. Os bons já vem configurados com o usuário e senha internamente, para que o usuário não tenha que guardar em anotações e um dia precisar ligar para o SAC da provedora pedindo os dados. Ele também controla as indas e vindas dos pacotes de Internet.

Roteador - A princípio, ele é um compartilhador do sinal de Internet. Serve para possibilitar à sua família a divisão do ponto de Internet entre todos (que tenham computador, smartphone, notebook). No entanto, ele faz mais do que isto. Ele estabelece uma nova rede na sua casa, com regras próprias, números IPs próprios e sinal WiFi, além de características de segurança contra o meio externo.

WAN - Quando nos referirmos à WAN, estamos referenciando a GRANDE rede de usuários que está conectada ao provedor. Quando o cabo da provedora de Internet chega ao seu modem, esta WAN é interrompida, e estabelecida uma pseudo-WAN entre o modem e os roteadores domésticos. No caso da maioria dos modems, a WAN começa com o endereço 192.168.1.1, o mesmo que digitamos no browser (http://192.168.1.1) para configurar o modem.

LAN - Depois do roteador, ou seja, nas saídas (geralmente 4 portas), fica estabelecida a sua rede doméstica. Daí para dentro você deve estabelecer uma nova rede com prefixo diferente de 192.168.1, para deixar as coisas bem separadas e evitar conflitos.

A - Roteador 1

O Roteador 1 (ligado à WAN) é um legítimo TP-LINK com duas antenas. As configurações são:

Ele vem de fábrica com IP padrão 192.168.1.1, que colide com o IP dos modems das operadoras. A primeira providência é trocar este endereço para 192.168.10.11 (primeiro roteador):

Cabo

O cabo do modem vai no slot RJ45 de entrada WAN, e o do computador usado para configurá-lo vai em qualquer slot LAN.

LAN

IP: 192.168.10.11
Máscara: 255.255.255.0 (Classe C)

WAN

Deixe o IP dinâmico. Como o modem é 192.168.1.1, provavelmente ele vai assumir o endereço 192.168.1.2, a não ser que você possua mais de um roteador primário no local de sua LAN.

B - Roteador 2

O roteador secundário é um antigo Pacific Networks, chinês legítimo. Desligue o cabo que vem do modem para a porta WAN do roteador mestre, pois você pode ter feito tentativas de ligação e um cabo pode ter sobrtado ligado. Ligue o cabo de rede do micro configurador num slot LAN deste roteador secundário. Tenha paciência, pois este também vem com IP 192.168.1.1. Na tela de configuração da LAN, altere para 192.168.2.1.

Aqui fica evidente o significado do número IP na definição de uma OUTRA REDE. Colocando nele o endereço 192.168.2.1, estabelece-se uma nova rede, com uma nova contagem para os computadores a ela adicionados.

LAN

IP: 192.168.2.1
Máscara: 255.255.255.0 (Classe C)

WAN

Coloque o IP dinâmico. Isto significa que, com base no endereço do roteador, ele vai gerar novos endereços para os outros computadores, sem colidir com nenhum endereço da rede estabelecida pelo roteador 1.

Não se apavore se, no painel de status do software deste roteador não aparecerem parâmetros preenchidos.

Feito isto, reconecte o roteador mestre na WAN, coloque um cabo no slot LAN do mestre e conecte a um slot WAN do roteador secundário.

Desligue modem e roteadores. Religue o modem e aguarde um pouco. Religue o roteador mestre e aguarde um pouco, enquanto testa se a Internet está funcionando no micro principal (ligado ao roteador mestre). Ligue o roteador secundário e aguarde, pois sua conexão à Internet pode demorar um pouco mais do que a do mestre.

Está pronto.

IMPORTANTE:

Tentar alterar o IP dos roteadores com o cabo WAN do modem (192.168.1.1) vai lhe dar uma enorme dor de cabeça, pois os IPs são iguais, e a rede enlouquece.

E do terceiro roteador em diante ?

O procedimento deve ser o mesmo do roteador 2. Eles terão o IP dinâmico e crescente, para manter a coerência. O próximo poderá ser o 192.168.3.1 e assim por diante.

A vantegem deste método é a de não perder 2 portas LAN.