2015-10-27 2 views
-2

J'ai une fonction d'envoyer des commentaires sur enter (et ne pas envoyer sur shift+enter):event.keyCode == 13 ne fonctionne pas dans Firefox

$(msg).keypress(function (e) { 
    if (event.keyCode == 13 && event.shiftKey) { 
     event.stopPropagation(); 
    } else if (e.which == 13) { 
     // ... 
    } 
}); 

Il travaille sur Chrome, mais pas dans Firefox.

+1

Ce qui est exactement « ne fonctionne pas »? Le commentaire n'est pas envoyé? Ou il est envoyé même si le décalage est pressé? –

+0

ne pas envoyer sur firefox –

+0

appuyez sur Entrée et rien ne se passe –

Répondre

4

Il échoue dans Firefox parce que vous avez essayé de référencer la variable globale spécifique IE event (que Chrome fournit également, comme un os lancé à un code spécifique IE), sdgluck pointed out. Firefox n'a pas cela, et donc le code renvoie une erreur. Utilisez l'argument que votre gestionnaire est passé (e dans votre exemple) et utilisez which, que jQuery va normaliser pour vous.

0

Je pense que la bonne façon de le faire est d'utiliser ceci:

$(msg).keypress(function(e) { 

    var key = e.keyCode || e.which; 

    if(key == 13 && e.shiftKey) { 
     e.stopPropagation(); 
    } 
}); 
+0

Non, jQuery normalise 'which 'pour vous, pas besoin de' key = e.keyCode || e.qui ». –