首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何防止在页面重新加载时在html输入中键入F5

如何防止在页面重新加载时在html输入中键入F5
EN

Stack Overflow用户
提问于 2020-02-21 18:06:43
回答 2查看 102关注 0票数 1

我正在做一个计算器应用程序,我在文档中添加了一个事件监听器来监听数字按键,如下所示:

代码语言:javascript
运行
复制
    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,如下所示:

我怎样才能防止这种情况发生,提前谢谢。

EN

回答 2

Stack Overflow用户

发布于 2020-02-21 18:18:00

我认为你可以这样修改你的正则表达式:

  1. 只匹配一个字符,以^开头,以$结束,删除全局/g /g很奇怪,因为它匹配-两次,还匹配范围"+“到"-”(字符代码43到45)。我认为您希望[\d-+*\/.]与数字(\d)、运算符+-*/或点之一匹配。

这就给出了:

代码语言:javascript
运行
复制
const regex = /^[\d-+*\/.]$/;

regex.test("F5"); // false
regex.test("a"); // false
regex.test("5"); // true
regex.test("+"); // true
票数 2
EN

Stack Overflow用户

发布于 2020-02-21 18:29:25

我通常使用isNaN(+variable)来检查字符串中的数字。对于这么简单的任务,Regexp的开销太大了。

代码语言:javascript
运行
复制
['-5', '5', 'F5', ' 5'].forEach(value => {
  const valueAsNumber = +value;
  console.log(`"${value}" is ${isNaN(valueAsNumber) ? 'not' : ''} a number. (${valueAsNumber})`); 
})

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60336310

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档