我正在做一个计算器应用程序,我在文档中添加了一个事件监听器来监听数字按键,如下所示:
function listenForKeyPress() {
// add document event listener for all key presses
document.addEventListener('keyup', (e) => {
// check to see if the keypress was a number
if (/[0-9-+-\--.]/g.test(e.key)) {
// check to see if the input is not already focused
if (document.activeElement !== input) {
// focus element
input.focus();
// focus value
input.value += e.key;
}
}
})
}
// call function
listenForKeyPress();问题是,当我使用F5刷新页面时,我会在输入元素中输入F5,如下所示:

我怎样才能防止这种情况发生,提前谢谢。
发布于 2020-02-21 18:18:00
我认为你可以这样修改你的正则表达式:
-两次,还匹配范围"+“到"-”(字符代码43到45)。我认为您希望[\d-+*\/.]与数字(\d)、运算符+-*/或点之一匹配。这就给出了:
const regex = /^[\d-+*\/.]$/;
regex.test("F5"); // false
regex.test("a"); // false
regex.test("5"); // true
regex.test("+"); // true发布于 2020-02-21 18:29:25
我通常使用isNaN(+variable)来检查字符串中的数字。对于这么简单的任务,Regexp的开销太大了。
['-5', '5', 'F5', ' 5'].forEach(value => {
const valueAsNumber = +value;
console.log(`"${value}" is ${isNaN(valueAsNumber) ? 'not' : ''} a number. (${valueAsNumber})`);
})
https://stackoverflow.com/questions/60336310
复制相似问题