2010-02-19 5 views
2

Salut 'im ayant un problème avec mon script dans Firefox, je reçois la faute, "window.event is undefined", où semble être le problème?JavaScript ne fonctionne pas dans Firefox

<script language="JavaScript1.2"> 

function formattel(){ 

var value = document.formkkush.telefoon.value; 
var valueLen = document.formkkush.telefoon.value.length; 

if(valueLen>2 && valueLen<4) 
{ 
if(window.event.keyCode==8) 
document.formkkush.telefoon.value=document.formkkush.telefoon.value.remove(valueLen-1,1); 
else 
document.formkkush.telefoon.value=document.formkkush.telefoon.value+"/"; 
} 
if(valueLen>5 && valueLen<7) 
{ 
if(window.event.keyCode==8) 
document.formkkush.telefoon.value=document.formkkush.telefoon.value.remove(valueLen-1,1); 
else 
document.formkkush.telefoon.value=document.formkkush.telefoon.value+"."; 
} 
if(valueLen>8 && valueLen<10) 
{ 
if(window.event.keyCode==8) 
document.formkkush.telefoon.value=document.formkkush.telefoon.value.remove(valueLen-1,1); 
else 
document.formkkush.telefoon.value=document.formkkush.telefoon.value+"."; 
} 
} 
+2

Cette balise de script est-elle réellement fermée et vous ne l'avez pas collée? N'utilisez pas l'attribut 'language', qui est obsolète. Les balises de script Javascript doivent inclure un type MIME: ''. Et pourquoi utilisez-vous/spécifiez-vous Javascript 1.2? C'est à partir de 1997. –

Répondre

3

L'objet d'événement global n'est pas créé dans Firefox. Il est plutôt passé comme premier argument dans la fonction du gestionnaire d'événements.

function formattel(eventObj){ 
    var value = document.formkkush.telefoon.value; 
    var valueLen = document.formkkush.telefoon.value.length; 

    // Make sure we have the even object no matter which browser we're running on 
    eventObj = eventObj || window.event; 

    if(valueLen>2 && valueLen<4) 
    { 
    if(eventObj.keyCode==8) 
     document.formkkush.telefoon.value=document.formkkush.telefoon.value.remove(valueLen-1,1); 
    else 
     document.formkkush.telefoon.value=document.formkkush.telefoon.value+"/"; 
    } 
    // etc... 
} 

Voir la documentation de Mozilla pour event.

En tant que suggestion totalement indépendante, vous devez essayer de réduire le nombre de recherches de nœuds DOM en définissant des recherches répétées sur une variable. Il rend votre code plus rapide et beaucoup plus présentable:

function formattel(eventObj){ 

    var telefoon = document.formkkush.telefoon; 
    var value = telefoon.value; 
    var valueLen = value.length; 

    // Make sure we have the even object no matter which browser we're running on 
    eventObj = eventObj || window.event; 

    if(valueLen>2 && valueLen<4) 
    { 
    if(eventObj.keyCode==8) 
     telefoon.value = telefoon.value.remove(valueLen-1,1); 
    else 
     telefoon.value += "/"; 
    } 
    // etc... 
} 

Ne pas oublier les opérateurs d'affectation (tels que +=) aussi!

+0

non ça ne marche pas désolé – Dave

+0

@Dave: pas besoin de m'excuser :-) La réponse que j'ai posté est la façon correcte de gérer l'objet événement si la fonction 'formatel' est le gestionnaire d'événements de la fonction. Lisez la documentation de Mozilla pour l'événement que j'ai posté et cela devrait vous aider à déterminer où vous allez mal. –

+0

ne pas oublier de vérifier un objet window.event, aussi. –

Questions connexes