2012-02-21 42 views
31

Tôi thấy một số câu hỏi tương tự ở đây (như JavaScript: Check if CTRL button was pressed) nhưng sự cố của tôi thực sự là sự kiện kích hoạt. mã js của tôi:javascript - phát hiện phím ctrl được nhấn hoặc lên, sự kiện nhấn phím không kích hoạt

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

Sự kiện này gây ra đối với bất kỳ phím khác ngoại trừ ctrl.
Tôi cũng cần kích hoạt nó cho ctrl.
Tôi không thể sử dụng jQuery/prototype/bất cứ điều gì để các giải pháp đó không được chấp nhận.

Vậy ... làm cách nào để tôi có thể phát hiện ctrl?

+1

không có điều này: if (e.ctrlKey) {....} hoạt động ..? –

Trả lời

15

Sự kiện của bạn có thuộc tính có tên ctrlKey. Bạn có thể kiểm tra điều này để xem liệu phím có được nhấn hay không. Xem đoạn mã dưới đây để kiểm soát nhiều hơn như phím.

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

Sử dụng onkeydown thay vì onkeypress có thể hữu ích.

Từ http://www.w3schools.com/jsref/event_onkeypress.asp

Lưu ý: Sự kiện onkeypress không sa thải vì tất cả các phím (ví dụ ALT, CTRL, SHIFT, ESC) trong tất cả các trình duyệt. Để chỉ phát hiện liệu người dùng có đã nhấn một phím hay không, hãy sử dụng sự kiện onkeydown thay thế, vì nó hoạt động cho tất cả các phím .

Các vấn đề liên quan