Jump to content


Photo

Como Capturar Eventos De Forma Correta?


  • Faça o login para participar
3 replies to this topic

#1 Micheeel

Micheeel

    ...

  • Usuários
  • 383 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC

Posted 31/08/2006, 10:19

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 :)
[]'s
Michel

Posted Image

#2 Klaus

Klaus

    @ ubuntu jaunty

  • Ex-Admins
  • 7924 posts
  • Sexo:Masculino
  • Localidade:127.0.0.1

Posted 31/08/2006, 13:25

http://www.google.co...ents javascript
Klaus Paiva
Conheça também: Taperás

#3 Micheeel

Micheeel

    ...

  • Usuários
  • 383 posts
  • Sexo:Não informado
  • Localidade:Jaraguá do Sul - SC

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.

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

Posted Image

#4 bimonti

bimonti

    Super Veterano

  • Usuários
  • 2654 posts
  • Sexo:Masculino

Posted 01/09/2006, 13:19

Tenta assim cara:
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
Posted Image
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)

IPB Skin By Virteq