Comment arrêter l'événement de frappe dans keydown.
J'ai un gestionnaire de touches dans le sens où j'ai besoin d'arrêter l'événement.
En fait, j'ai un formulaire et une zone de texte.
lorsque l'utilisateur appuie sur la touche "entrée", la touche "keydown" déclenche l'événement et le gestionnaire.
le formulaire de soumission sera déclenché dans la frappe du clavier, donc je dois arrêter l'événement presse dans mon gestionnaire de touches.
function onKeyDown(event) {
event.preventDefault();
}
http://www.w3.org/TR/DOM-Level-2-Events/events.html#Events-Event-preventDefault
ou
function onsubmit(event) {
return false;
}
renvoie false pour arrêter la propagation d'événements
Dans opera, vous devez utiliser l'événement keypress
pour empêcher les actions par défaut des événements de clavier. keydown
permet d'empêcher l'action par défaut dans tous les navigateurs, mais pas dans l'opéra.
Voir cette longue liste d’incohérences dans la gestion du clavier entre les navigateurs.
Essayez event.cancelBubble = true
dans le gestionnaire d'événements.
Ici, j'ai arrêté l'événement qui bouillonnait pour les touches up/dn/left/right:
$(document).on("keydown", function(e) {
if(e.keyCode >= 37 && e.keyCode <= 40) {
e.stopImmediatePropagation();
return;
}
});
J'ai aussi essayé e.preventDefault ou event.cancelBubble = true à partir des réponses ci-dessus, mais elles n'ont eu aucun impact.
J'ai pu obtenir le fichier event.preventDefault (); travailler dans Safari et Firefox, mais pas dans IE7 ou IE8.
Si vous souhaitez uniquement désactiver la touche Entrée, assurez-vous que vous recherchez également la valeur de la clé (13 pour Entrée) et que vous définissez uniquement event.preventDefault () pour cette clé.
Quelqu'un peut-il trouver une réponse pour IE7/8 ou Opera?
Écrire,
<script type="text/javascript">
function keyDn(obj)
{
if(window["event"]["keyCode"]==48) // key 0 will disabled keyPress event
{
obj["onkeypress"]=null;
}
}
function keyPs(obj)
{
alert("Keypress");
}
</script>
<form id="form1" runat="server">
<div>
<input type="text" onkeydown="keyDn(this)" onkeypress="keyPs(this)" />
</div>
</form>
dans le gestionnaire de keydown.