Tôi muốn tìm hiểu phím ký tự nào được nhấn theo cách tương thích với nhiều trình duyệt trong Javascript thuần túy.
event.key
sẽ trực tiếp cung cấp cho bạn char được ép
Tôi muốn tìm hiểu phím ký tự nào được nhấn theo cách tương thích với nhiều trình duyệt trong Javascript thuần túy.
event.key
sẽ trực tiếp cung cấp cho bạn char được ép
Câu trả lời:
JavaScript "Xóa":
<script type="text/javascript">
function myKeyPress(e){
var keynum;
if(window.event) { // IE
keynum = e.keyCode;
} else if(e.which){ // Netscape/Firefox/Opera
keynum = e.which;
}
alert(String.fromCharCode(keynum));
}
</script>
<form>
<input type="text" onkeypress="return myKeyPress(event)" />
</form>
JQuery:
$(document).keypress(function(event){
alert(String.fromCharCode(event.which));
});
keypress
sự kiện, cung cấp cho bạn mã ký tự, thay vì keyup
hoặc keydown
cung cấp cho bạn mã khóa.
e.key
vẫn không có hỗ trợ trình duyệt đầy đủ.
Có một triệu bản sao của câu hỏi này ở đây, nhưng dù sao thì ở đây cũng sẽ lặp lại:
document.onkeypress = function(evt) {
evt = evt || window.event;
var charCode = evt.keyCode || evt.which;
var charStr = String.fromCharCode(charCode);
alert(charStr);
};
Tham khảo tốt nhất về các sự kiện chính mà tôi đã xem là http://unixpapa.com/js/key.html .
Gần đây hơn và sạch hơn nhiều: sử dụng event.key
. Không còn mã số tùy ý!
LƯU Ý: Các thuộc tính cũ (
.keyCode
và.which
) không được dùng nữa.
node.addEventListener('keydown', function(event) {
const key = event.key; // "a", "1", "Shift", etc.
});
Nếu bạn muốn đảm bảo chỉ nhập các ký tự đơn lẻ, hãy kiểm tra key.length === 1
hoặc đó là một trong các ký tự bạn mong đợi.
Thử:
<table>
<tr><td>Key:</td><td id="key"></td></tr>
<tr><td>Key Code:</td><td id="keyCode"></td></tr>
<tr><td>Event Code:</td><td id="eventCode"></td></tr>
</table>
<script type="text/javascript">
window.addEventListener("keydown", function (e) {
//tested in IE/Chrome/Firefox
document.getElementById("key").innerHTML = e.key;
document.getElementById("keyCode").innerHTML = e.keyCode;
document.getElementById("eventCode").innerHTML = e.code;
})
</script>
* Lưu ý: điều này hoạt động trong "Chạy đoạn mã"
Trang web này làm tương tự như mã của tôi ở trên: Keycode.info
**check this out**
<!DOCTYPE html>
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<script>
$(document).ready(function(){
$(document).keypress(function(e)
{
var keynum;
if(window.event)
{ // IE
keynum = e.keyCode;
}
else if(e.which)
{
// Netscape/Firefox/Opera
keynum = e.which;
}
alert(String.fromCharCode(keynum));
var unicode=e.keyCode? e.keyCode : e.charCode;
alert(unicode);
});
});
</script>
</head>
<body>
<input type="text"></input>
</body>
</html>
Một trong những thư viện yêu thích của tôi để làm điều này một cách tinh vi là Mousetrap .
Nó được cung cấp với nhiều loại plugin, một trong số đó là record
plugin có thể xác định chuỗi các phím được nhấn.
Thí dụ:
<script>
function recordSequence() {
Mousetrap.record(function(sequence) {
// sequence is an array like ['ctrl+k', 'c']
alert('You pressed: ' + sequence.join(' '));
});
}
</script>
<button onclick="recordSequence()">Record</button>