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

    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 输入到输入元素中,如下所示: 在此处输入图片说明

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

#1楼 票数:2

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

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

这使 :

const regex = /^[\d-+*\/.]$/;

regex.test("F5"); // false
regex.test("a"); // false
regex.test("5"); // true
regex.test("+"); // true

#2楼 票数:0

我通常使用isNaN(+variable)作为检查字符串中的数字。 正则表达式对于这么简单的任务来说太昂贵了。

 ['-5', '5', 'F5', ' 5'].forEach(value => { const valueAsNumber = +value; console.log(`"${value}" is ${isNaN(valueAsNumber) ? 'not' : ''} a number. (${valueAsNumber})`); })

  ask by Ali Mohamed translate from so

未解决问题?本站智能推荐:

1回复

如何使用其他表单输入中的javascript keyup函数更新表单的输入值

我有一种使用keyup函数将3个字段上的输入值相乘的形式,从而得到可以与文本一起显示的总数。 这是我所拥有的东西: $(document).ready(function () { $(".txtMult1 input").keyup(multInputs); $(".txtM
3回复

jQuery更改焦点输入

我正在尝试创建一个系统,当我填充文本框时它将移至下一个。 目前,我有以下代码: 我要继续进行操作,以便继续回显#txt3 #txt4 #txt3 ect。 也将有一种方法可以通过箭头键更改焦点文本框。 当向上箭头键被按下选择EG从改变#txt4到#txt3和相对的下键。 提前
1回复

Javascript:返回绑定输入,该输入是先前输入的结果

我是Java语言的新手,无法理解为什么未发生绑定事件。 我有一个简单的表单,可以添加并动态更新输入的subTotal和Total。 小计可以正确更新,但是获取主要总计的唯一方法是手动更新(在小计之一中单击或写入内容)。 我也需要动态更新总数。 我使用“更改keyup ke
3回复

jQuery 计算输入的内容

我有一个系统,它计算“今天”类中有多少文本框具有值“/”。 如果它具有值“L”或“l”,我希望它也计算在内。 我尝试了以下方法: 我尝试了以下解决方案: 这导致所有文本框都被计算在内,无论值如何。
2回复

jQuery键盘输入不会触发,而只需更改为单击触发

此处的JSFIDDLE: http : //jsfiddle.net/TmXFZ/ 该代码的作用是:如果在将鼠标悬停在表格单元格上时按ALT,则该单元格的背景颜色将改变。 如果将鼠标悬停或释放ALT,则单元格的背景色将恢复为原始状态。 但是,松开ALT键时,颜色不会变回原样。
2回复

.keyup()在克隆的输入字段上

我正在克隆输入字段,然后在编辑克隆的输入字段时试图将新值作为文本字符串放入外部div中。 谢谢您的帮助! 这是jsfiddle
3回复

基于表单输入的实时Javascript计算

我正在尝试基于表单输入制作一个实时计算器,当我使用一个示例div它可以工作,但当我尝试在输入中打印总数时,我似乎错过了一些东西...... 工作加价解决方案: 工作脚本 非工作标记 非工作脚本
1回复

如何在没有输入字段的移动网站上输入

用户需要按 X 键才能运行该功能,它在有物理键盘的情况下完美运行,但如何在移动版本上强制使用虚拟键盘? 如果不添加输入字段,我想不出一种方法来做到这一点。 document.addEventListener("keyup", function(event) { if (event.k