Domanda

Dal momento che sto usando jQuery, anche qualsiasi soluzione tramite questo funzionerebbe. Idealmente, mi piacerebbe conoscere entrambi, tuttavia.

Ho già i tasti freccia associati a un'altra funzione sulla mia pagina (usando jQuery), ma il fatto di farli scorrere la pagina in aggiunta a ciò, mi causa problemi.

Forse lo sapevo una volta, ma non me lo ricordo più.

È stato utile?

Soluzione

L'aggiunta dell'handler keypress a livello di documento fa il trucco!

var ar=new Array(33,34,35,36,37,38,39,40);

$(document).keydown(function(e) {
     var key = e.which;
      //console.log(key);
      //if(key==35 || key == 36 || key == 37 || key == 39)
      if($.inArray(key,ar) > -1) {
          e.preventDefault();
          return false;
      }
      return true;
});

Altri suggerimenti

In alcune circostanze, ad es. quando in realtà non hai un elemento su cui ti concentri, solo un'area su cui devi fare clic, potresti non avere troppo controllo sul gestore e prevenire l'evento a livello globale può essere un po 'traballante (come ho trovato nel modo più duro).

La soluzione più semplice in questi casi è quella di legare al clic anche del pulsante di controllo e concentrarsi su un elemento di input vuoto che si posiziona -9000px a sinistra.

È quindi possibile bloccare in modo affidabile l'evento tramite keydown e non doversi preoccupare di bloccare il comportamento predefinito o altri listener globali poiché il comportamento predefinito sull'elemento di input sposta semplicemente il cursore a sinistra e a destra.

Se aggiungi un gestore di pressione dei tasti a livello di documento, questo impedirà il normale scorrimento della pagina in qualsiasi momento, non solo quando l'elemento è attivo, questo potrebbe essere un effetto indesiderato.

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