2010-05-04 11 views
23

Sto codificando una funzione in jquery che viene eseguita se Ctrl + R viene premuto, ma non riesco a scoprire quali sono i codici tasto sinistro e destro ctrl ... Qualcuno può aiutare per favore?Come rilevare che Ctrl + R è stato premuto?

UPDATE

///this works 
    $(document).keydown(function(e){ 
     if(e.keyCode==17){alert("control was pressed")}; 
}); 

Successivo interrogo Come faccio a collegare premere il tasto di controllo e un altro premere il tasto per eseguire una funzione?

if(e.keyCode==17){llCtrlPress=1}; 
    if(e.keyCode==97 && llCtrlPress=1){DO SOMETHING} 
    ???????????? 

che sembra che avrebbe funzionato bene, ma allora come faccio a impostare llCtrlpress torna a '0' sul keyup?

+0

@sadmicrowave - ho fatto un casino :(Avrebbe dovuto essere 17. Ho corretto ora – karim79

+0

Se. rimuovi la tua domanda originale, non sarà utile per le persone future, ti preghiamo di lasciare la tua domanda originale e quindi di aprire una nuova domanda se ne hai un'altra. –

risposta

40

È necessario utilizzare la funzione keydown per intercettare Ctrl caratteri. Qui è la mia implementazione di Ctrl +A:

$(document).keydown(function(e) { 
     if (e.keyCode == 65 && e.ctrlKey) { 
      alert('ctrl A'); 
     } 
    }); 

Ctrl-R è più difficile perché nella maggior parte dei browser, cioè Ricarica pagina, che significa che il javascript non funziona, la pagina viene aggiornata .

Solo una nota, il valore keyCode è diverso nelle funzioni keydown/keyupup rispetto alle funzioni di pressione dei tasti.

EDIT: variabile ctrl Rimosso, dimenticò ctrlKey

+0

Quella variabile ha bisogno di qualche chiusura seria –

+0

Non ha comunque avuto bisogno della variabile, ha dimenticato ctrlKey. Grazie a lincolnk e Josh. –

+0

Codice chiave? http://keycode.info/ –

5

Here è un intero elenco di codici chiave che è possibile utilizzare.

+1

Link è morto. Risorsa aggiornata? – briansol

+0

Usa questo http://keycode.info/ –

0

C'è una proprietà booleana denominata ctrlKey che si dovrebbe essere in grado di utilizzare qui ...

$(document).keypress(function(e) { 
    alert("Ctrl is pressed: " + e.ctrlKey); 
}); 
1

perché non stai usando e.ctrlKey?

if (e.keyCode == 65 && e.ctrlKey) { 
    alert('ctrl A'); 
} 

edit: ecco una funzione appropriata per rilevare la pressione dei tasti Ctrl-R e fermare il browser da ricaricare.

function keydown(e) { 
    if (e.ctrlKey && e.keyCode == 82) { 
     // 82 = r 

     // TODO: your thing. 

     if (e.preventDefault) { 
      e.preventDefault(); 
     } 
     else { 
      return false; 
     } 
    } 
} 

io sono un novizio jQuery, penso che faresti

$(document).keydown(keydown); 

giusto?

0

Il codice chiave per Ctrl è 11.

$(document).keypress(function(e) { 


    alert("Ctrl is pressed: " + e.ctrlKey); 
}); 
5

Questo è il codice che sto usando per disabilitare l'aggiornamento su IE e Firefox (Questo funziona bene per F5, Ctrl +F5 e Ctrl +R)

<script language="javascript" type="text/javascript"> 
    //this code handles the F5/Ctrl+F5/Ctrl+R 
    document.onkeydown = checkKeycode 
    function checkKeycode(e) { 
     var keycode; 
     if (window.event) 
      keycode = window.event.keyCode; 
     else if (e) 
      keycode = e.which; 

     // Mozilla firefox 
     if ($.browser.mozilla) { 
      if (keycode == 116 ||(e.ctrlKey && keycode == 82)) { 
       if (e.preventDefault) 
       { 
        e.preventDefault(); 
        e.stopPropagation(); 
       } 
      } 
     } 
     // IE 
     else if ($.browser.msie) { 
      if (keycode == 116 || (window.event.ctrlKey && keycode == 82)) { 
       window.event.returnValue = false; 
       window.event.keyCode = 0; 
       window.status = "Refresh is disabled"; 
      } 
     } 
    } 
</script> 

Se non si desidera utilizzare useragent per rilevare il tipo di browser utilizzato ($ .browser utilizza navigator.userAgent per determinare la piattaforma), è possibile utilizzare

if('MozBoxSizing' in document.documentElement.style) - restituisce true per Firefox

+1

L'utente non ha chiesto di disabilitare F5, quindi la risposta (Sebbene utile) non risponde alla domanda. –

+1

Inoltre, è orribile che tu stia cercando di disabilitare le funzioni fondamentali del browser; qualunque problema tu stia cercando di risolvere, questa non è la risposta giusta. –

0
$(document).ready(function() { 
     $(document).keyup(function (e) { 
      if (e.keyCode == 81 && e.ctrlKey) { //CTRL+Q 
       alert("CTRL+Q"); 
      } else if (e.keyCode == 27) { //ESCAPE 
       alert("escape"); 
      } else if (e.keyCode == 67 && e.altKey) { // ALT+C 
      alert("alt+c"); 
     }  
    }); 
}); 

[key codes][1] 


    [1]: http://msdn.microsoft.com/en-in/library/aa243025%28v=vs.60%29.aspx 
1

Usa event.key e JS moderno!

$(document).keypress(function(event) { 
    if (event.key === "r" && event.ctrlKey) { 
     // Do something 
    } 
}); 

o senza jQuery:

document.addEventListener("keypress", function onEvent(event) { 
    if (event.key === "r" && event.ctrlKey) { 
     // Do something better 
    } 
}); 

Mozilla Docs

Supported Browsers

Problemi correlati