javascript-détection Ctrl touche pressée ou vers le haut, l'événement de keypress ne déclenche pas
je vois quelques questions similaires ici (comme JavaScript: vérifiez si le bouton CTRL a été appuyé ) 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 déclenche pour toute autre clé à l'exception de la ctrl .
Je dois aussi le déclencher pour ctrl .
Je ne peux pas utiliser jQuery / prototype / quoi que ce soit donc ces solutions ne sont pas acceptable.
So... Comment puis-je détecter le ctrl ?
3 réponses
votre événement a une propriété nommée ctrlKey. Vous pouvez vérifier cela pour regarder si la clé a été pressé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
utiliser onkeydown plutôt que onkeypress peut aider.
de http://www.w3schools.com/jsref/event_onkeypress.asp
Note: l'événement onkeypress N'est pas activé pour toutes les touches (par exemple ALT, CTRL, SHIFT, ESC) dans tous les navigateurs. Pour détecter uniquement si l'utilisateur a appuyez sur une touche, utilisez l'événement onkeydown à la place, parce qu'il fonctionne pour toutes les clés.