Vamos tratar do problema de scripts para formulários, onde deseja-se filtrar o que o usuário digita, permitindo somente números para um campo de identidade. O grande problema é que determinados scripts tem problemas com determinados browser. Então este tutorial visa compilar e mostrar um exemplo onde se resolve este problema de forma rápida e objetiva.
O problema em questão
Alguns programadores encontram problemas na hora de criar e executar scripts dependendo do browser. Na verdade, não se trata de uma incompatibilidade. Torna-se necessário apenas ajustar o script para que funcione corretamente, independentemente do browser.
Vamos tratar do problema de scripts para formulários, onde deseja-se filtrar o que o usuário digita, permitindo somente números para um campo de identidade.
A solução e o código fonte
Suponha que um script funcione no Microsoft Internet Explorer e nele seja utilizado keyCode. O keyCode tem a função de retornar o código ASCII da tecla pressionada. Pode ser utilizado num evento tipo onKeyPress por exemplo. Neste browser em questão, o script vai funcionar perfeitamente. Já no Mozilla/Netscape, em vez de utilizar keyCode, deve-se optar pelo which.
Seja o seguinte exemplo:
function checaNumero(x){
var y=x.keyCode; // a variável y armazenará o código ASCII da tecla pressionada.
if(y>=48 && y<=57 || y==8){
return true; // Se o digitado for número ou backspace apenas, o script permite a tecla
} else {
return false; // Não foi um número, nem backspace.
}
}
Este código funciona perfeitamente no Microsoft Internet Explorer. Para que funcione no Mozilla/Netscape, deve ser adaptado da seguinte forma:
function checaNumero(x){
var y=x.which;
if(y>=48 && y<=57 || y==8){
return true;
} else {
return false;
}
}
Mas então surge um novo problema. Como adivinhar em que browser o usuário usará o sistema? Usuários de
Linux não possuem o Microsoft Internet Explorer, e muitas pessoas que usam Windows não usa Mozilla/Netscape. Como resolver esse problema? O melhor é criar um código inteligente que identifique qual o browser do usuário e ajuste o script automaticamente.
A solução é descrita abaixo:
function checaNumero(x){
if(navigator.appName=='Microsoft Internet Explorer'){
var y=x.keyCode;
if(y>=48 && y<=57 || y==8){
return true;
} else {
return false;
}
}
if(navigator.appName=='Netscape'){
var y=x.which;
if(y>=48 && y<=57 || y==8){
return true;
} else {
return false;
}
}
}
Caso deseje trocar informações, mande um e-mail para btayar2006@gmail.com.
Eng. Comp. Bruno S. Tayar.
Caso queiram incluir o Konqueror na brincadeira, fica da seguinte forma:
function checaNumero(x){
if(navigator.appName=='Microsoft Internet Explorer' || navigator.appName=='Konqueror'){
var y=x.keyCode;
if(y>=48 && y<=57 || y==8){
return true;
} else {
return false;
}
}
if(navigator.appName=='Netscape'){
var y=x.which;
if(y>=48 && y<=57 || y==8){
return true;
} else {
return false;
}
}
}