2013-03-06 9 views

risposta

11

Si potrebbe farlo in questo modo, anche se mi aspetto che potrebbe essere terribilmente lento su pagine più grandi:

$('*').off('keyup keydown keypress'); 

che sta andando a selezionare ogni singolo elemento della pagina, quindi rimuovere qualsiasi keyup, keydown, e keypress eventi associati a loro.

Se si vuole evitare che l'utente utilizzando il backspace chiave per passare alla pagina precedente, si potrebbe provare il seguente codice:

var inputTags = ['INPUT', 'TEXTAREA']; 

$(document).on('keypress', function(e) { 
    if(e.which === 8 && $.inArray(e.target.tagName, inputTags) === -1) 
     e.preventDefault(); 
}); 

Questo dovrebbe limitare l'uso del tasto backspace, tranne nei casi in cui lo stato attivo è un elemento di input in cui è possibile immettere testo (quindi un <input type="text"> o un <textarea>).

Dai un'occhiata a questo working demo.

+0

questo impedirà alla pagina di reindirizzare alla pagina precedente alla pressione di backspace? –

+0

@MilindAnantwar No, questa è una funzione browser integrata, non un gestore di eventi che viene aggiunto alla pagina usando jQuery. Potresti essere in grado di * aggiungere * un gestore di eventi per impedire che, se questo è il tuo obiettivo, dovrei controllare. –

+0

@MilindAnantwar Ho modificato la mia risposta per includere alcune informazioni su come procedere per evitare di utilizzare il tasto backspace per navigare tra gli elementi precedenti della cronologia. –

3

Prova

$(document).find('*').off('keyup keydown keypressed'); 

e si dovrebbe mettere questo in blocco $(document).ready(), dopo tutte le JS caricati a pagina (prima </body> tag, ad esempio).

+0

questo impedirà alla pagina di reindirizzare alla pagina precedente alla pressione del backspace? –

+0

Non sono sicuro che la pressione del tasto "backspace" sia seguita da "documento" html o "finestra" del browser. Ma penso che dovrebbe essere seguito dalla 'finestra' del browser. – alexbusu

2

è possibile utilizzare la funzione preventDefault() per risolverlo

+1

No, non puoi. Ciò impedisce l'azione predefinita DOPO che gli eventi sono già stati eseguiti. Se si desidera interrompere l'esecuzione degli handler di eventi, è necessario scollegarli o avere un evento con priorità più alta (una funzione JavaScript non supporta ma ActionScript 3 è supportata per un decennio) e quindi chiamare stopImmediatePropagation, che impedirà altri gestori collegati al nodo dall'esecuzione e dal gestore collegato ai nodi padre. Ma non c'è modo di impostare la priorità dell'evento in JavaScript, quindi in sostanza non c'è ancora modo di disabilitare gli eventi della tastiera nel 2017 in JavaScript. – Triynko

1

$ ('*'). Unbind ('keyup keydown pressione del tasto')

-1

Questo codice cancella l'ultimo premuto in TextBox2 chiave, utilizzando substr .

`$("#TextBox2").val($("#TextBox2").val().substr(0, ($("#TextBox2").val().length-1)));` 
    //removes last letter pressed. 
+1

Sebbene il codice sia apprezzato, dovrebbe sempre avere una spiegazione di accompagnamento. Questo non deve essere lungo, ma è previsto. – peterh

+0

Non vedo come questo sia rilevante w.r.t. La domanda dell'OP. Raccomandare la cancellazione –

0

Per me ha funzionato questa combinazione:

Accendere evento Pressione

$(document).keypress(function(){ 
 
// Code 
 
});

e per lo spegnimento questo evento ho usato:

$(document).off('keypress');

Problemi correlati