做一个数字键盘上的数字有不同的键码不是在键盘上方的数字?
下面是一些JavaScript是应该在keyup事件上运行,但只有当键码是48和57之间。这里是代码:
$('#rollNum').keyup(function(e) {
if(e.keyCode >= 48 && e.keyCode <= 57) { //0-9 only
var max = 15;
var textLen = $(this).val().length;
var textLeft = max - textLen;
. . .
我的问题是,这个代码仅在响应在键盘的顶部输入的号码运行,但响应来自数字键盘输入的数字不运行。
我想答案一定是数字小键盘具有不同的keyCode值,但我要如何找出那些是什么?
该键码是不同的。 键盘0-9是密钥号码96
至105
你if
语句应该是:
if ((e.keyCode >= 48 && e.keyCode <= 57) || (e.keyCode >= 96 && e.keyCode <= 105)) {
// 0-9 only
}
这里有一个对键码参考指南
你可以简单地运行
$(document).keyup(function(e) {
console.log(e.keyCode);
});
看到浏览器控制台按键的代码。
或者,你可以在这里找到关键代码: https://developer.mozilla.org/en-US/docs/Web/API/KeyboardEvent/keyCode#Numpad_keys
与键代码的问题是避免与键盘上方的数字组合键,就必须增加一个检查上的键“Shift”键和“Alt”键 ,以避免特殊字符,如@&“{} ...
最简单的解决方法是e.key转换为数字,并检查转换给NaN的 !
let key = Number(e.key)
if (isNaN(key)) {
console.log("is not numeric")
}
else {
console.log("is numeric")
}
键代码是在键盘顶部数字键盘上的数字和数字不同。
键码:
上键盘的顶部的数字 (0 - 9):48 - 57
数字键盘上的数字 (0 - 9):96 - 105
JavaScript的条件:
if((e.keyCode >= 48 && e.keyCode <=57) || (e.keyCode >= 96 && e.keyCode <=105)) {
// entered key is a number
}
参考所有的键码(有示范): http://www.codeforeach.com/javascript/keycode-for-each-key-and-usage-with-demo
对于那些想要一个CTRL + C,CTRL-V解决方案的人,在这里你去:
/**
* Retrieves the number that was pressed on the keyboard.
*
* @param {Event} event The keypress event containing the keyCode.
* @returns {number|null} a number between 0-9 that was pressed. Returns null if there was no numeric key pressed.
*/
function getNumberFromKeyEvent(event) {
if (event.keyCode >= 96 && event.keyCode <= 105) {
return event.keyCode - 96;
} else if (event.keyCode >= 48 && event.keyCode <= 57) {
return event.keyCode - 48;
}
return null;
}
它采用了第一个答案的逻辑。
通过@ .A答案。 莫雷尔我觉得是具有占地面积小的最佳易于理解的解决方案。 只是想,如果你想有一个较小的代码量这个解决方案是羊肚菌的修改非常适用于不容许任何形式的字母,包括投入臭名昭著的“E”字在上面添加。
function InputTypeNumberDissallowAllCharactersExceptNumeric() {
let key = Number(inputEvent.key);
return !isNaN(key);
}
你可以使用这个很容易找出键码:
$(document).keyup(function(e) {
// Displays the keycode of the last pressed key in the body
$(document.body).html(e.keyCode);
});
http://jsfiddle.net/vecvc4fr/