Tôi đã viết một hàm JS chỉ cho phép nhập số. Một bản sao của chức năng đó là dưới đây:Phím shift được giữ trong JavaScript
function NumbersOnly(e) {
var evt = e || window.event;
if (evt) {
var keyCode = evt.charCode || evt.keyCode;
//Allow tab, backspace and numbers to be pressed, otherwise return false for everything.
//(keyCode>=96 && keyCode<=105) are the numpad numbers
if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) {
}
else {
evt.returnValue = false;
}
}
}
Chức năng này hoạt động tốt với tất cả các số nhưng vấn đề của tôi xảy ra khi phím shift được ấn và một trong các phím số được nhấn. Giá trị trả lại là một trong các ký tự phía trên các số. Vì vậy, ví dụ nếu tôi giữ phím shift và bấm phím 7, '&' được trả về nhưng mã khóa vẫn là 55 !! Tôi đã mong đợi điều đó sẽ khác.
Vì vậy, câu hỏi của tôi là làm cách nào để kiểm tra xem phím shift có được giữ hay không. Tôi đã thử kiểm tra sau nhưng điều này không hoạt động:
if (keyCode === 16) {
evt.returnValue = false;
}
else {
if ((keyCode >= 48 && keyCode <= 57) || (keyCode >= 96 && keyCode <= 105) || keyCode === 9 || keyCode === 8) {
}
else {
evt.returnValue = false;
}
}
Tôi đang sử dụng ASP.NET 4.0.
Mọi trợ giúp sẽ được nhận biết ơn.
Xin cảm ơn trước.
Nếu bạn cung cấp cho evt trong console.log, bạn sẽ thấy thuộc tính shiftKey, nếu phím shift được nhấn, nó sẽ trở thành hiện thực –