2010-11-13 21 views
1

J'utilise un commutateur de frappe javascript pour déclencher des événements, et cela fonctionne très bien dans les navigateurs webkit, mais cela ne fonctionne pas dans Firefox. Quelqu'un peut-il aider? le code J'utilise est:Keypress ne pas tirer dans Firefox

$(document).keydown(function(e) { 
switch(e.keyCode) { 

    case 39: 
    event.preventDefault(); 
      alert("Arrow Key"); 
} 
break; 

    case 37: 
      event.preventDefault(); 
      alert("Arrow Key"); 
} 
}); 

Les fonctions que je suis en train de feu sont plus complexes qu'une simple alerte, mais je pensais que je garderais simple pour l'explication.

+0

J'ai essayé keydown et keyup et produisent tous les mêmes résultats dans firefox (ne fonctionne pas) et tous fonctionnent dans les navigateurs webkit. – mcbeav

+0

Transmettez-vous explicitement l'événement de Html à la fonction? – CarneyCode

+0

@ vous devriez utiliser le clavier sur une zone de texte ou si bien, pourquoi faites-vous dans le document, est-il global – kobe

Répondre

2

Vous avez une erreur de syntaxe (une mauvaise fixation } avant break;), et un objet non défini (événement) à l'intérieur de votre fonction.

$(document).keydown(function(e) { 
switch(e.keyCode) { 

case 39: 
e.preventDefault(); 
     alert("Arrow Key"); 

break; 

case 37: 
     e.preventDefault(); 
     alert("Arrow Key"); 
} 
}); 

Le mauvais objet (événement) does'nt se produire dans MSIE, car il y a toujours un objet global appelé « événement »

+0

ah, si simple. Merci beaucoup. Travaillé comme un charme. Je ne sais pas pourquoi j'écrivais event.PreventDefault(); – mcbeav

+0

Peut-être parce qu'à l'intérieur du jquery-docs ils utilisent toujours 'event.preventDefault()'. Mais ils appellent aussi l'argument functions-argument "event". –

+0

@dr molle brillant, belle prise, je regardais mais je ne pouvais pas identifier. J'ai fait beaucoup de choses en utilisant..keydowns – kobe

3

IIRC Firefox utilise charCode et pas keyCode.

Pouvez-vous essayer:

$(document).keydown(function(e) { 
kCode = (e.keyCode)? e.keyCode: e.charCode; 
switch(kCode) { 

case 39: 
event.preventDefault(); 
     alert("Arrow Key"); 
} 
break; 

case 37: 
     event.preventDefault(); 
     alert("Arrow Key"); 
} 
});