Evento javascript no mozilla

27 respostas
A

Bom dia! Preciso desabilitar algumas teclas, no IE faço assim:

function  Atalhos(){
 var shift         = window.event.shiftKey;
 var ctrl          = window.event.ctrlKey;
 var tecla         = window.event.keyCode;
 var alt           = window.event.altKey;

//Ctrl W
if(ctrl && tecla == 87){
   event.keyCode=0;
   event.returnValue=false;
   window.open("tchau.jsp", "popAjuda","top=10,left=10,width=400,height=250,resizable=no,menubar=no,toolbar=no,location=no,directories=no,scrollbars=yes");
   window.close();
}
}

Não sei como fazer isso funcionar no mozilla, pois a tecla é executada mesmo se eu anular o evento. Veja como estou tentando:

function  Atalhos(e){

    var teclaP        = e.which;       //Teclas primárias
    var teclaS        = e.keyCode;     //Teclas secundárias
   
//Ctrl W
if( teclaS == 18 && teclaP == 87){
   e.whichValue=0;
   window.open("tchau.jsp", "popAjuda","top=10,left=10,width=400,height=250,resizable=no,menubar=no,toolbar=no,location=no,directories=no,scrollbars=yes");
   window.close();
}
}

Muito obrigada.

27 Respostas

_fs

Desculpe não ajudar em nada, mas se você conseguir resolver o problema, não se esqueça de postar aqui por favor …

Tenho o mesmo problema, mas não consegui resolver de jeito nenhum :expressionless:

louds

Tratamento de evento do mozilla é bem diferente do IE.
Tem que chamar um método que cancela a ação padrão do evento. E vou ficar te devendo o nome dela (depois vejo em casa e posto aqui).

_fs

event.preventDefault()?

louds

Creio que seja esse mesmo.

A

Mas onde eu coloco isso? Vi a sugestão do Lipe e tentei colocar ao invés de:

onKeyDown="Atalhos(event)"

Coloquei:

onKeyDown="Atalhos(event.preventDefault())"
Mas não funcionou.
Coloquei jogado dentro da função tb não funcionou.
:frowning:

louds

Voce não consegue cancelar eventos no onKeyDown :!: :!: :!:

Troque onKeyDown por onKeyPress que deveria funcionar…

plentz

“louds”:
Tratamento de evento do mozilla é bem diferente do IE.
Tem que chamar um método que cancela a ação padrão do evento. E vou ficar te devendo o nome dela (depois vejo em casa e posto aqui).

event.preventDefault()

Mas funciona em ambos?

louds

“diego_sl”:

event.preventDefault()

Mas funciona em ambos?

Lógico que não! Pergunta boba essa :wink:

A

Valeu Louds! Muito obrigada, agora funcionou!!! :smiley: :!:

_fs

nananinanao! poooode ir postando como que ficou o código final :smiley:

A

Taí Lipe. Coloquei no form:

<form method="POST" name="form" action="" onKeyPress="Atalhos(event);" >
Na função:
function  Atalhos(e){

    var tecla     = e.which;      //Teclas primárias (a,b,c,d,e....enter,espaço)
    var teclaS   = e.keyCode; //Teclas secundárias (outras teclas);

    //alert(tecla);  descomente aqui para descobrir o número da tecla
    //alert(teclaS); 

//////////////////////////////////////////////////////////////////
//Tabulação - se o usuário digita TAB, não funcionará   
/////////////////////////////////////////////////////////////////
    if(teclaS == 9){
     e.preventDefault();
    }
}

Bjão
Andrêsa Leite Lopes

_fs

valeeeeeeeeeeeeeeu ;D

D

Gostaria de saber como faço para atribuir um evento no Mozilla.
No Internet Explorer é:

event.keyCode = 9; ou seja, a tecla TAB.
Você pode me ajudar a fazer o mesmo para o Mozilla?

_fs

event.wich

D

Lipe, aproveitando sua boa vontade em me ajudar, vc sabe me dizer nesse meu código que comando faz atualizar a página? Ela tá atualizando sem eu mandar… rs

function DuplaDigitacao(valor,campo,salva, e){

var tecla   = e.keyCode;
document.form.tabulacaoSt.value     =   campo.name;
valor       = String(valor);
var repetiu = String(document.form.repetiu.value);

if(tecla== 13){
   e.preventDefault();
   if(campo.value == "" || campo.value == " " || campo.value == "   "){
      alert("Esse campo não pode ficar em branco!");
      return;
   }

   if(repetiu != "true"){
      if(repetiu == valor){
           if(salva == "sim"){
              e.preventDefault();
              document.form.repetiu.value = "trueee";
              campo.value = valor;
              Finalizar();
              return;
            }else{
              document.form.repetiu.value = "trueee";
              campo.value = valor;
              e.wich=9;
              return;
            }
     }else{
           document.form.repetiu.value = valor;
           campo.value = "";
           return;
     }
   }
   document.form.repetiu.value = valor;
   campo.value = "";
   return;

   if(salva == "sim"){
      e.preventDefault();
      Finalizar();
   }else{
      alert("salva=nao");
      e.wich=9;
   }
}

}

_fs

Nesse código não tem nada, mas provavelmente na functiona Finalizar tem.

ps.: coloque código entre as tags [ code]seucodigo[ /code], assim ele fica endentado :wink:

MarcusGoncalves

Identado :?:

_fs

Google >> páginas em português:
endentado: 122
indentado: 2140
edentado: 130
identado: 151

creio que seja Indentado então :slight_smile:

D

“LIPE”:
Nesse código não tem nada, mas provavelmente na functiona Finalizar tem.

ps.: coloque código entre as tags [ code]seucodigo[ /code], assim ele fica endentado ;)

Lipe, aquela dica que vc me deu - e.wich - não deu certo.
Já tentei e.which =9, e.keyCode = 9 e nada deu certo.
Esse é o erro que dá:
“Erro: setting a property that has only a getter
Arquivo fonte: http://localhost:8080/digidocdefault/js/codigosMz.js
Linha: 495”
Vc tem outra solução?

_fs

Como o erro indica, você não pode atribuir um valor a essa propriedade, pode apenas consultá-la com
e.wich == 9
por exemplo.

D

Algué conhece como se atribui um valor a um evento javascript para o mozilla?
preciso fazer a página dar um TAB para o próximo campo, mas não sei como!!!
Por favor, me ajudem, estou desesperada…

obs.: os campos não são fixos, eles são dinâmicos, portanto, não posso dar um document.form.campo.focus.
Obrigada

_fs

Felizmente é impossível. Já pensou entrar num site que dá um “ok” em alguma coisa se você aperta alt+f4?

O que você pode fazer é pegar o array de inputs ( objForm.getElementsByTagName ) e se virar com isso.

D

“LIPE”:
Felizmente é impossível. Já pensou entrar num site que dá um “ok” em alguma coisa se você aperta alt+f4?

O que você pode fazer é pegar o array de inputs ( objForm.getElementsByTagName ) e se virar com isso.

Lipe, estou precisando de vc mais uma vez…
Estou usando OnBlur no meu codigo e dentro da funcao javascript eu preciso verificar a tecla, mas eu não consigo lê-la nem com e.which, nem com e.keyCode.
Vc sabe porque? E se tem alguma solução?
Veja meu código:

function DuplaDigitacao(valor,campo,salva, e){
    var tecla       = e.which;
    alert(tecla);
    valor           = String(valor);
    var digitado    = document.form.digitado.value;
    var digitou     = document.form.digitou.value;
    if(tecla== 9){
        if(campo.value == "" || campo.value == " " || campo.value == "   "){
            e.preventDefault();
            alert("Esse campo não pode ficar em branco!");
            return;
        }else if(digitou =="0"){
            e.preventDefault();
            campo.value == "";
            document.form.digitou.value = "1";
            document.form.digitado.value = valor;
        }
        if(digitou=="1"){
            if(digitado == valor){
                if(salva=="sim"){
                    e.preventDefault();
                    document.form.digitado.value = valor;
                    document.form.digitou.value = "2";
                    Finalizar();
                    return;
                }else{
                    document.form.digitado.value = "";
                    document.form.digitou.value = "0";
                    return;}
            }else{
                e.preventDefault();
                campo.value = "";
                document.form.digitado.value = valor;
                document.form.digitou.value = 1;
                return;
            }
        }
    }
}
D

Na verdade o meu código nao está nem lendo a tecla corretamente nem cancelando o evento (efetuei uns testes).

_fs

Tenho quase certeza que o evento onblur não fornece a tecla pressionada.

marcoex

Pessoal, devido a problemas como esse acima, estou desenvolvendo uma bibliotequinha de compatibilidade do javascript para usar com mozilla, extendendo as funcionalidades do IE, como outerHTML, attachEvent, etc… Gostariam de me ajudar, ou citar pessoas que já estão fazendo isso?

Alguma coisa está pronta, envio a vocês. Segue em anexo… Quando esta biblioteca tiver bastante métodos, não haverá mais reclamações né… abraços

maniacs

para não ter que se preocupar com compatibilidades no event use essa função…

function fixEvent(e){
	e = (e || event);
	try {
		if(!e.preventDefault){e.preventDefault = function(){e.returnValue = false;};}		
		if(!e.stopPropagation){e.stopPropagation = function(){e.cancelBubble = true;};}
		if(!e.target){e.target = e.srcElement;}
		e.x = e.clientX;
		e.y = e.clientY;
	}catch(ex){}
	return e;
}

faz e.preventDefault, e.stopPropagation e e.target funcionarem em ambos browsers …
Funciona tanto IE/FF/Opera etc…

Criado 23 de setembro de 2004
Ultima resposta 2 de jan. de 2008
Respostas 27
Participantes 8