2012-12-08 12 views
6

Attualmente ho installato una funzione di andare avanti e indietro quando si premono i tasti freccia sinistra e destra nelle pagine di utilizzare questo:keydown quando l'ingresso non è a fuoco

$(document).keydown(function (e) { 
    if ($(e.target).is('input')) { return false 
    } else if (e.keyCode == 37) { 
     $(".pageback").click(); 
     return false; 
    } 
    if (e.keyCode == 39) { 
     $(".pagenext").click(); 
     return false; 
    } 
}); 

In questo modo i tasti freccia per essere usato per navigare avanti e indietro, ma quando si incontra una casella di testo, i tasti freccia sono ancora attivi.

Sebbene ciò interrompa le funzioni keydown quando la casella di testo è a fuoco, non consente di digitare nulla nell'area di immissione.

AIUTO!

Grazie

+0

prega di non pubblicare il tuo codice di tutto su una riga, è troppo difficile da seguire. – nnnnnn

risposta

8

"inoltre non consentono nulla per essere digitati nella zona di ingresso."

Il problema è questa parte:

if ($(e.target).is('input')) { return false 

Quando ritorni false dal gestore di eventi che impedisce il comportamento predefinito per l'evento.

Cambiarlo in return true o solo return (senza valore) e il comportamento predefinito (in questo caso, digitando nel campo) sarà consentito.

. (Nota: si consiglia inoltre di verificare la presenza di elementi dell'area di testo, non solo ingressi)

+0

fantastico grazie. Sarebbe possibile aggiungere anche un breve tempo di attesa di 200 ms tra la pressione dei tasti per i tasti sinistro e destro? –

+0

Spiacente, non capisco cosa intendi per aggiungere un ritardo, a meno che non intendi che vuoi impedire più di una pressione del tasto freccia entro 200 ms? (Ma secondo me sarebbe un'altra domanda, e prima dovresti implementarla tu stesso.) – nnnnnn

+0

Lo so, ho provato a utilizzare una funzione setTimeout, semplicemente non so dove deve essere aggiunto È tutto. –

Problemi correlati