2012-02-21 47 views
31

Veo algunas preguntas similares aquí (como JavaScript: Check if CTRL button was pressed) pero mi problema es en realidad el desencadenamiento del evento. Mi código JS:javascript - detectar la tecla Ctrl presionada o arriba, evento de pulsación de tecla no desencadena

// 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; 
     } 
    } 

El evento desencadena por ninguna otra tecla, excepto la ctrl.
Necesito también activarlo para ctrl.
No puedo usar jQuery/prototype/whatever, por lo que esas soluciones no son aceptables.

Entonces ... ¿cómo puedo detectar el ctrl?

+1

no esto: if (e.ctrlKey) {....} work ..? –

Respuesta

15

Su evento tiene una propiedad denominada ctrlKey. Puede verificar esto para ver si se presionó la tecla o no. Consulte el fragmento a continuación para obtener más control, como las teclas.

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 
7

Usar onkeydown en lugar de onkeypress puede ayudar.

De http://www.w3schools.com/jsref/event_onkeypress.asp

Nota: El evento onkeypress no se dispara para todas las claves (por ejemplo, ALT, CTRL, SHIFT , CES) en todos los navegadores. Para detectar solo si el usuario tiene presionó una tecla, use el evento onkeydown en su lugar, porque funciona para todas las teclas.

Cuestiones relacionadas