仅数字输入键码验证器也接受正斜杠

时间:2016-07-13 11:12:56

标签: javascript input

我写了一段代码,它只接受数值作为关键事件。它应该只接受0-9和退格。但它也允许正斜杠作为输入。

{{1}}

2 个答案:

答案 0 :(得分:2)

正斜杠/的ASCII代码为47,因此indexOf返回0而不是-1。

答案 1 :(得分:0)

在我的原始回复引用下面,根据@ t.niese留下的评论,我创建了一个更新的笔。

http://codepen.io/ballerton/pen/PzOdxW

实际上,使用 element.addEventListener('keypress',function(event){ var charcodeAcceptable=['1','2','3','4','5','6','7','8','9','0','Backspace']; if (window.event) { var charCode = window.event.key; } else if (event) { var charCode = event.key; } if(charcodeAcceptable.indexOf(charCode)==-1){ event.preventDefault(); } }); 获取按键的值,然后针对允许的值进行测试:

  element.addEventListener('keypress',function(event){
        var charcodeAcceptable=[47,48,49,50,51,52,53,54,55,56,57,8];
        if (window.event) {
           var charCode = window.event.keyCode;
        }
        else if (event) {
           var charCode = event.keyCode;
        }


      if(charcodeAcceptable.indexOf(charCode)==-1){
         event.preventDefault();

      }
  });
  

我修改了代码以使用event.keyCode,它可以作为   预期

     

http://codepen.io/ballerton/pen/vKWzRO

  element.addEventListener('keypress',function(event){
    var charcodeAcceptable=[47,48,49,50,51,52,53,54,55,56,57,8];

    if(charcodeAcceptable.indexOf(event.keyCode)==-1){
       event.preventDefault();
    }
  });
     

Chris Coyier的原版笔

     

见@ t.niese的评论

     

关于测试本身,重要的是测试它是否是   窗口事件?

     

如果不能,你不能只使用:

pressed