2017-07-03 38 views
1

我在输入中遇到了避免特殊字符(Alt +数字来自Bloq。num - >☺☻♥♦♣♠•◘○)的问题。当Alt键加上来自Bloq号码的号码被按下时,阻止按键

我输入声明如下:

<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()没有成功。任何关于我的问题在哪里的想法?

谢谢,我真的很感谢你能提供任何帮助。

UPDATE:作为注释解释了解决方案来改变对按键的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; 
    } 
} 

就这么简单!

+0

试试这个库:https://开头github.com/tzuryby/jquery.hotkeys – brijrajsinh

回答

0

返回false不会禁用该事件。 您需要做一个event.preventDefault(),它阻止事件发生,而不是返回false。

event.preventDefault(); 

return false正在为onbeforesubmit事件中,形式的。

+0

正如你可以在我的第一篇文章中看到的,我已经尝试过,但字符也显示:( – Ivan

+0

你是否添加了'event.preventDefault()' e'onkeydown'?如果(!maskNumber()){ event .preventDefault(); } });(如果不是这样, –

+0

是的,即使只有\t' $(“。numeric”)。keydown(function(event){event.preventDefault();});'任何字符都被输入,除了特殊的字符和Alt键[☺☻♥♦♣ ♠•◘○] – Ivan

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"/>

相关问题