2012-12-27 24 views
9

Non riesco a ottenere preventDefault() per funzionare.preventDefault() su evento keyup non funzionante

Ecco alcune variazioni di codici diversi che ho provato:

Prime:

$(document).keyup(function (evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode == 192) { 
     alert('192'); 
     return false; 
    } 
}); 

Secondo:

$(document).keyup(function (evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode == 192) { 
     alert('192'); 
     evt.preventDefault(); 
    } 
}); 

Terzo:

$(document).keyup(function (evt) { 
    var charCode = (evt.which) ? evt.which : event.keyCode; 
    if (charCode == 192) { 
     alert('192'); 
     evt.preventDefault(); 
     return false; 
    } 
}); 

funziona solo allarme.
Tutto funziona su Opera, ma non su Chrome e IE Ha anche provato keydown e keypress. Lo script keypress non funziona. $('#thetext').keydown(function(evt){}); non funziona.
Ecco il codice intero: http://bbullett.tk/test/kakey.html

Key 192 = ` 

Sto cercando di inserire un testo o il simbolo invece di `

+1

Si prega di indentare il codice in modo che sia leggibile. Grazie! Quale chiave è '192'?Qual è il comportamento predefinito quando viene premuto questo tasto? –

+0

Cosa stai cercando di fare? Cosa farebbe fermare l'evento keyup? – Guffa

+0

Sto cercando di inserire qualche simbolo invece di ' –

risposta

26

Ascoltando keyup evento è troppo tardi per chiamare preventDefault, provare ascoltando keypress o keydown invece .

$('input[type=text], textarea').on('keydown', function(event){ 
    if (event.which == 192) { 
     console.log('192'); 
     event.preventDefault(); 
    } 
}); 

Nota che jQuery normalizza which proprietà ed è cross-browser.

http://jsfiddle.net/763ys/

+0

Non è cambiato nulla: S –

+0

@BullotOmsarashvili Funziona con me Firefox. – undefined

+0

Ma non su cromo. –

0

vedi esempio di lavoro qui http://jsfiddle.net/WGSvm/

In tutti e tre gli esempi che avete usato

$(document).keyup(function (evt) { }); 

direi uso particolare div id invece di $(document).keyup(function (evt) { });

come $("#DivIdName").keyup(function (evt) { }); e utilizzare anche onkeypress rigorosamente, perché se si utilizza onkeyup ha già eseguito la sua attività predefinita di stampa o qualunque essa sia.

2

Si sta utilizzando JQuery, che normalizza le differenze tra i browser, quindi è sufficiente controllare la proprietà evt.which. Vedere la documentazione di JQuery: http://api.jquery.com/keyup/

Come altri hanno già detto, la chiave è troppo tardi per interrompere l'elaborazione della chiave. Utilizzare invece keydown o keypress. http://api.jquery.com/category/events/keyboard-events/

+0

Qualche idea su come utilizzare il keydown su un browser Android? Keydown e keypress non sono molto utili se non funzionano su tutte le piattaforme ... – JohnG

Problemi correlati