2013-04-15 92 views
42

tôi đang cố gắng để nắm bắt ctrl + z tổ hợp phím trong javascript với mã này:chụp ctrl + z tổ hợp phím trong javascript

<html> 
<head> 
    <title>Untitled Document</title> 
</head> 
<body> 

    <script type='text/javascript'> 
     function KeyPress(e) { 
      var evtobj = window.event? event : e 


      //test1 if (evtobj.ctrlKey) alert("Ctrl"); 
      //test2 if (evtobj.keyCode == 122) alert("z"); 
      //test 1 & 2 
      if (evtobj.keyCode == 122 && evtobj.ctrlKey) alert("Ctrl+z"); 
     } 

     document.onkeypress = KeyPress; 
    </script> 

</body> 
</html> 

dòng nhận xét "test1" tạo ra các cảnh báo nếu tôi giữ phím ctrl và nhấn bất kỳ phím nào khác.

Dòng nhận xét "test2" tạo cảnh báo nếu tôi nhấn phím z.

Đặt chúng lại với nhau theo dòng sau khi "thử nghiệm 1 & 2", và giữ ctrl chìa khóa sau đó nhấn z chính không tạo ra các cảnh báo như mong đợi.

Điều gì sai với mã?

Trả lời

56
  1. Sử dụng onkeydown (hoặc onkeyup), không onkeypress
  2. Sử dụng keyCode 90, chứ không phải 122

bản demo online: http://jsfiddle.net/29sVC/

Để làm rõ, mã phím là không giống như mã ký tự .

Mã ký tự dành cho văn bản (chúng khác nhau tùy thuộc vào mã hóa, nhưng trong nhiều trường hợp 0-127 vẫn là mã ASCII). Mã khóa ánh xạ tới các phím trên bàn phím. Ví dụ, trong ký tự unicode 0x22909 có nghĩa là 好. Không có nhiều bàn phím (nếu có) thực sự có chìa khóa cho việc này.

Hệ điều hành sẽ xử lý việc chuyển đổi tổ hợp phím thành mã ký tự bằng cách sử dụng phương thức nhập mà người dùng đã định cấu hình. Kết quả được gửi đến sự kiện nhấn phím. (Trong khi KeyDown và KeyUp đáp ứng cho người sử dụng nhấn nút, không gõ văn bản.)

+1

Cảm ơn, mà làm việc. Tại sao khóa onkeypress và keyCode 122 không hoạt động? –

+1

@Paul Johnston: Tôi không có một lời giải thích tốt cho điều đó :-( – zerkms

+0

Làm thế nào để ngăn chặnDefault() thay vì cảnh báo trong giải pháp của bạn xin vui lòng? Tôi m thử nghiệm cho Ctrl + t –

7

Ctrl +t Cũng có thể ... chỉ cần sử dụng mã phím là 84 như

if (evtobj.ctrlKey && evtobj.keyCode == 84) 
alert("Ctrl+t"); 
3

90 là các Z trọng và điều này sẽ làm ảnh chụp cần thiết ...

function KeyPress(e){ 
    // Ensure event is not null 
    e = e || window.event; 

    if ((e.which == 90 || e.keyCode == 90) && e.ctrlKey) { 
     // Ctrl + Z 
     // Do Something 
    } 
} 

Tùy thuộc vào yêu cầu của bạn, bạn có thể muốn thêm một e.preventDefault(); trong câu lệnh if của bạn để chỉ thực hiện chức năng tùy chỉnh của bạn.

1
$(document).keydown(function(e){ 
    if(e.which === 89 && e.ctrlKey){ 
    alert('control + y'); 
    } 
    else if(e.which === 90 && e.ctrlKey){ 
    alert('control + z'); 
    }   
}); 

Demo

-1

Plugin này Made by me có thể hữu ích.

Plugin

Bạn có thể sử dụng plugin này, bạn phải cung cấp mã chính và chức năng để được chạy như thế này

simulatorControl([17,90], function(){console.log('You have pressed Ctrl+Z');}); 

Trong đoạn code tôi đã hiển thị như thế nào để thực hiện cho Ctrl + Z. Bạn sẽ nhận được tài liệu chi tiết Trên liên kết. Plugin nằm trong phần Mã JavaScript của Bút của tôi trên Codepen.

-1

Sử dụng mã này cho CTRL + Z. keycode cho Z trong bấm phím là 122 và CTRL +Z là 26. kiểm tra mã phím này trong lĩnh vực giao diện điều khiển của bạn

$(document).on("keypress", function(e) { 
     console.log(e.keyCode); 
     /*ctrl+z*/ 
     if(e.keyCode==26) 
     { 
      //your code here 
     } 
    }); 
Các vấn đề liên quan