[tut] - Sự kiện bàn phím đơn và phím kép với jQuery
1/ Sự bắt sự kiện bàn phím đơn
<script>
$(function(){
$(window).keyup(function(e){
if(e.keyCode=='65'){
alert('Bạn mới ấn phím A')
}
})
})
Kết quả là sẽ xuất thông báo khi ta ấn chữ A trên bàn phím.
- keyup(e): sự kiện khi người dùng ấn 1 phím rồi thả lên.e là tham số truyền vào để tương tác với sự kiện, bạn đặt tên là gì cũng đc.
- $(window) : là ảnh hưởng sử kiện lên tất cả các đổi tượng, nghĩa là tất cả các đối tượng chịu ảnh hưởng của sự kiện keyup() ở trên kia.Hoặc ta có thể đổi lại như $(document) hay $('*') đều có tác dụng như nhau.
- 65 : là mã ASCII của phím A
if(e.keyCode=='65'){
alert('Bạn mới ấn phím A')
}
- nếu người dùng ấn phím có mã ASCII là 65 thì cho xuất hiện thông báo.
Vậy là quá đơn giản dễ hiểu phải không.
2/Bắt sự kiện với tổ hợp phím:Để đơn giản thì mình sẽ hướng dẫn với tổ hợp phím 2 phím thôi( Ví dụ CTRL_A)
checkCtrl=false
$(window).keydown(function(e){
if(e.keyCode=='17'){
checkCtrl=true
}
}).keyup(function(ev){
if(ev.keyCode=='17'){
checkCtrl=false
}
}).keydown(function(event){
if(checkCtrl){
if(event.keyCode=='65'){
alert('Bạn vừa mới ấn tổ hợp CTRL_A')
checkCtrl=false
}
}
})
- Đầu tiên mình tạo ra 1 biến checkCtrl giá trị false ban đầu: BIến này có chức năng kiểm tra rằng phím CTRL dã đc ấn chưa, nếu rồi cho ấn tiếp phím A, không thì ngược lại.
- Với phím CRTL có ASCII là 17 và phím A có mã ASCII là 65
- Ban đầu nếu người dùng ấn xuống(k thả lên) sự kiện keydown: Nếu là phím CTRL thì cho biến checkCtrl=true
$(window).keydown(function(e){
if(e.keyCode=='17'){
checkCtrl=true
}
})
- Sau đó kiểm tra nếu người dùng có thả phím CTRL lên thì cho ngay checkCtrl=false
$(window).keyup(function(ev){
if(ev.keyCode=='17'){
checkCtrl=false
}
})
- Cuối cùng
$('*').keydown(function(event){
if(checkCtrl){
if(event.keyCode=='65'){
alert('Bạn vừa mới ấn tổ hợp phim CTRL_A')
checkCtrl=false
}
}
})
OK vậy là xong ... dễ hiểu thì Thanks cái nha.
Demo chặn CTRL_U trên Diễn Đàn của mình : http://svphuyen.com/forum.php
Việc phát triển thêm chức năng là tùy các bạn.. mục đích bài viết là để bạn bắt đc sự kiện bàn phím một cách đơn giản.. so với việc dùng javascript thuần.
Mình thấy có một số bạn đã từng hỏi có chặn đc tổ hợp phím CTRL_U không mà chưa có câu trả lời , và đây là câu trả lời là đc nhưng k đồng nghĩa với việc chặn đc xem nguồn nhé ;-D