Olá a todos...
Eu estava fazendo uma validação de formulário aqui mas eu notei uma coisa bem chata, não que seja novidade, mas é um porre... vocês devem ter mais experiência em JS que eu, então eu pergunto?
No FireFox só tem como pegar o keycode/charcode de um evento passando o envento na função?!
Por exemplo:
<input name="CPF" type="text" id="CPF" onkeypress="formatCPF(this, event);" size="14" maxlength="14" />
Sou obrigado nesse input a passar o event? Não encontrei nenhuma outra forma de fazer isso p/ que funcione no Opera, no IE e no FF sem passar o event e verificar qual navegador o usuário tem.
Tenho que usar
window.alert(evt.keyCode); // IE / Opera
window.alert(evt.charCode); // Firefox
No IE eu teria como pegar isso também usando "window.event.keyCode". Pro Opera funciona assim também, ja o FF ¬¬
Alguém pode me informar sobre isso? Algo mais fácil e simples? Ou é o caso de falta de padrão e não tem cura nesse caso?
Valeu
Como Capturar Eventos De Forma Correta?
Started By Micheeel, 31/08/2006, 10:19
3 replies to this topic
#1
Posted 31/08/2006, 10:19
[]'s
Michel
Michel
#3
Posted 31/08/2006, 14:20
¬¬
Eu procurei no google, foi isso mesmo que encontrei...
Cada navegador interpreta de uma forma... uns seguindo o WC3, outros o modelo do Netscape, outros próprios (microsoft) e por ai vai.
Sou obrigado a passar o parametro "event" na função, e usar "return" no input porque senão o FF e o Opera digitam o valor automatico que eu não quero, no meu caso, letras.
Ficou assim mesmo... se alguém tiver alguma sugestão ou modificação caso eu esteja fazendo algo errado ou incompativel com algum navegador me dê um toque, mas a principio isso funcinou p/ preencher o campo no FF, Opera e IE.
Eu procurei no google, foi isso mesmo que encontrei...
Cada navegador interpreta de uma forma... uns seguindo o WC3, outros o modelo do Netscape, outros próprios (microsoft) e por ai vai.
Sou obrigado a passar o parametro "event" na função, e usar "return" no input porque senão o FF e o Opera digitam o valor automatico que eu não quero, no meu caso, letras.
Ficou assim mesmo... se alguém tiver alguma sugestão ou modificação caso eu esteja fazendo algo errado ou incompativel com algum navegador me dê um toque, mas a principio isso funcinou p/ preencher o campo no FF, Opera e IE.
function formatCPF(element, evt) { // 111.111.111-22 var separador1 = '.'; var separador2 = '-'; var conjunto1 = 3; var conjunto2 = 7; var conjunto3 = 11; if (evt.which) { var nTecla = evt.which; // FF } else { var nTecla = evt.keyCode; // Opera e IE } if (nTecla >= 48 && nTecla <= 57) { //window.alert('true'); switch (element.value.length) { case 3: element.value = element.value + separador1; break; case 7: element.value = element.value + separador1; break; case 11: element.value = element.value + separador2; break; } } else { return false; } } //HTML <input name="CPF" type="text" id="CPF" onkeypress="return formatCPF(this, event);" size="14" maxlength="14" />
Edição feita por: Micheeel, 31/08/2006, 14:20.
[]'s
Michel
Michel
#4
Posted 01/09/2006, 13:19
Tenta assim cara:
Eu só tenho o Firefox aqui, e não to mais com o emulador do windows, mas é quase certo que funciona nele também, no Opera eu não testei.
var nTecla = evt.keyCode || evt.which;
Eu só tenho o Firefox aqui, e não to mais com o emulador do windows, mas é quase certo que funciona nele também, no Opera eu não testei.
WebFórum - Equipe de Desenvolvimento - Monitor
Yeah I do have some stories, and it's true I want all the glory ...
Yeah I do have some stories, and it's true I want all the glory ...
1 user(s) are reading this topic
0 membro(s), 1 visitante(s) e 0 membros anônimo(s)