web-dev-qa-db-fra.com

Arrêter l'événement de frappe

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.

28
Santhosh
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

41
john

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.

3
treecoder

Essayez event.cancelBubble = true dans le gestionnaire d'événements.

1
zzandy

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.

1
Gerfried

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?

0
harwig

É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.

0
adatapost