当按下Alt键加上Bloq编号时,防止按键

时间:2017-07-03 12:53:14

标签: javascript jquery numeric keydown

我在输入中避免使用特殊字符(Alt +数字来自Bloq。num - >☺☻♥♦♣♠•◘○)时遇到问题。

我的输入声明如下:

<html:text styleId="inputMaxVol" styleClass="numeric"/>

这是我的onReady

$(".numeric").keydown(function(event) {
    return maskNumber();
});

这是我正在努力完成工作的地方(没有成功)

function maskNumber() {
   if (event) {
     var charCode = (event.which)? event.which : event.keyCode;
     console.log(charCode);
     // If not a number
     if ((charCode < 47 || charCode > 58) && (charCode < 95 || charCode > 105))  {
        console.log("not a number");
        return false;
     } else if (event.altKey) {
        //No special characters admitted
        console.log("Alt pressed");
        return false;
     }
  } else {
    return false;
  }
}

如果我按下Alt + 1(数字键盘中的“1”键),则会出现白色笑脸,并且在我的日志中会出现类似的内容

18
not a number
97
Alt pressed

我也尝试过event.preventDefault()但没有成功。对我的问题在哪里有任何想法?

谢谢,非常感谢您提供的任何帮助。

更新:正如评论中所解释的那样,解决方案是更改keypress的keydown事件并更改charcode比较数字(现在仅当因为(charCode < 48 || charCode > 57)由于返回的数字而改变了太

所以解决方案如下

$(".numeric").keypress(function(event) {
    return maskNumber();
});

function maskNumber() {
   if (event) {
      var charCode = (event.which)? event.which : event.keyCode;        
      // If not a number
      if (charCode < 48 || charCode > 57) {                     
           return false;
      }              
   } else {
     return false;
   }
 }

这很简单!

2 个答案:

答案 0 :(得分:3)

  

尝试以下代码,它可以在每个浏览器上使用,或者如果您想使用库,请访问此链接:https://github.com/tzuryby/jquery.hotkeys

$("#txtmy").keypress(function(event) {
  if (event.which.toString().length > 3)  {   
     event.preventDefault();
     return;
  }
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" id="txtmy"/>

答案 1 :(得分:0)

返回false不会禁用该事件。 您需要执行event.preventDefault(),以阻止事件发生,而不是返回false。

event.preventDefault();

return false适用于表单的onbeforesubmit事件。