Je vois des questions similaires ici (comme JavaScript: vérifier si le bouton CTRL a été enfoncé ) mais mon problème est en fait le déclenchement de l'événement. Mon code js:
// Listen to keyboard.
window.onkeypress = listenToTheKey;
window.onkeyup = listenToKeyUp;
/*
Gets the key pressed and send a request to the associated function
@input key
*/
function listenToTheKey(e)
{
if (editFlag == 0)
{
// If delete key is pressed calls delete
if (e.keyCode == 46)
deleteNode();
// If insert key is pressed calls add blank
if (e.keyCode == 45)
createBlank();
if (e.keyCode == 17)
ctrlFlag = 1;
}
}
L'événement se déclenche pour toute autre clé à l'exception de ctrl.
Je dois également le déclencher pour ctrl.
Je ne peux pas utiliser jQuery/prototype/que ce soit donc ces solutions ne sont pas acceptables.
Alors ... comment puis-je détecter le ctrl?
Essayez d'utiliser if (e.ctrlKey)
.
Utiliser onkeydown plutôt que onkeypress peut aider.
De http://www.w3schools.com/jsref/event_onkeypress.asp
Remarque: L'événement onkeypress n'est pas déclenché pour toutes les touches (par exemple ALT, CTRL, SHIFT, ESC) dans tous les navigateurs. Pour détecter uniquement si l'utilisateur a appuyé sur une touche, utilisez plutôt l'événement onkeydown, car il fonctionne pour toutes les touches.
Votre événement a une propriété nommée ctrlKey. Vous pouvez vérifier cela pour voir si la touche a été enfoncée ou non. Voir l'extrait ci-dessous pour plus de contrôle comme les clés.
function detectspecialkeys(e){
var evtobj=window.event? event : e
if (evtobj.altKey || evtobj.ctrlKey || evtobj.shiftKey)
alert("you pressed one of the 'Alt', 'Ctrl', or 'Shift' keys")
}
document.onkeypress=detectspecialkeys