Domanda

Come fermare l'evento keypress nel keydown.

Ho un gestore di keydown in cui devo interrompere l'evento keypress.

In realtà ho un modulo e una casella di testo al suo interno.

quando l'utente preme " inserisci " chiave, keydown, innesco l'evento e ho il gestore.

l'invio del modulo si attiverà nel keypress, quindi devo interrompere l'evento keypress nel mio gestore keydown.

È stato utile?

Soluzione

function onKeyDown(event) {   
  event.preventDefault();
}

http: // www. w3.org/TR/DOM-Level-2-Events/events.html#Events-Event-preventDefault

o

function onsubmit(event) {
  return false;
}

restituisce false per interrompere la propagazione degli eventi

Altri suggerimenti

In opera, devi usare l'evento keypress per prevenire le azioni predefinite per gli eventi della tastiera. keydown funziona per prevenire azioni predefinite in tutti i browser ma non in opera.

Vedi questo lungo elenco di incongruenze nella gestione della tastiera attraverso i browser.

Prova event.cancelBubble = true nel gestore eventi.

Qui ho smesso di gorgogliare l'evento per i tasti su / dn / left / right:

    $(document).on("keydown", function(e) {
        if(e.keyCode >= 37 && e.keyCode <= 40) {
            e.stopImmediatePropagation();
            return;
        }
    });

Ho anche provato e.preventDefault o event.cancelBubble = true dalle risposte sopra, ma non hanno avuto alcun impatto.

Write,

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

nel gestore keydown.

Sono stato in grado di ottenere event.preventDefault (); per funzionare in Safari e Firefox, ma non IE7 o IE8.

Se vuoi solo disabilitare la chiave di invio, assicurati di controllare anche il valore della chiave (13 per Invio) e di impostare solo event.preventDefault () per quella chiave.

Qualcuno in grado di trovare una risposta per IE7 / 8 o Opera?

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top