l'Événement keydown pour remplacer la touche retour ne fonctionne pas dans Firefox
J'ai suivantes simple code javascript, qui gère la Touche Retour, je ne veux pas envoyer le formulaire lorsque la touche entrée est enfoncée dans la zone de texte.
Tout cela fonctionne très bien, mais dans Firefox, si je afficher un message d'alerte, puis il s'arrête de fonctionner et la forme commence à être soumis, alors que le code exact sans message d'alerte fonctionne très bien et arrête le formulaire de soumission. Je ne comprends pas pourquoi d'alerte est de gâcher la fête..
$("document").ready(function () {
$("#input1").keydown(OnKeyDown);
});
function OnKeyDown(e) {
if (e.keyCode == 13) {
//alert('this will fail'); //Adding alert makes the form submit
stopBubble(e);
return false;
}
}
function stopBubble (e) {
//If an event object is provided, then this is a non-IE browser
if (e && e.stopPropagation)
//and therefore it supports the W3C stopPropagation() method
e.stopPropagation();
else
//Otherwise, we need to use the Internet Explorer
//way of cancelling event bubbling
window.event.cancelBubble = true;
}
<input type="text" id="input1" value="">
OriginalL'auteur ace | 2010-10-04
Vous devez vous connecter pour publier un commentaire.
Je ne sais pas vraiment si l'événement est normalisé ou non. Mais c'est comment je dois faire pour qu'il fonctionne dans tous les navigateurs:
e.which
est normalisé déjà, pas besoin de vérifier pour les deux 🙂Premier point: il va travailler sur la
keydown
événement, à l'exception de l'Opéra. Deuxième: il suffit d'utilisere.which
. jQuery normalise les propriétés de l'événement pour vous.keydown ne fonctionne pas lorsque vous affichez le message d'alerte dans firefox.
Je vous promets, Firefox 13 pour le
keyCode
propriété dans unkeydown
cas lorsque la touche est enfoncée.OriginalL'auteur Gregg
jQuery normalise déjà, vous pouvez le faire:
Lorsque vous ne
return false
à partir d'un gestionnaire, jQuery appelleévénement.preventDefault()
etévénement.stopPropgation()
en interne déjà. Vous pouvez également faire de la fonction anonyme, version:Il n'...je n'ai pas changé de
e.which
dans la deuxième plus courte exemple si, viens de réaliser que cela, mis à jour.OriginalL'auteur Nick Craver
OriginalL'auteur Basil