2014-10-30 109 views
1

我试图阻止除数字(包括字符和数字上的那些字符)和减号( - )和加号(+ )标志和逗号(,)。只允许数字,加号,减号,逗号,F5和更多

现在,它只键入我输入的两倍(例如2是22),它也用新数字替换当前值,但是加号,减号和逗号分别插入½,m ,和k。我也想打开在网站上使用的典型键,例如F5,Ctrl + R,Shift + R,删除,首页和结束,但我不知道如何解锁F5,Shift + R,和Ctrl + R.

$('body').on('keydown', 'input[name="textfield-correction-temperature"]', function(c) { 
    console.log(c.keyCode); 
    if(c.keyCode != 107 && c.keyCode != 109 && c.keyCode != 188 && c.keyCode > 31 && (c.keyCode < 48 || c.keyCode > 57)) { 
     return false; 
    } else { 
     var key = String.fromCharCode(c.which); 
     $(this).val(key); 
    } 
}); 

jsFiddle demo

+1

对于第一个问题:您为不需要的输入(这是OK)返回false,但是如果有效,则手动添加输入而不取消输入。这意味着你添加一个字符,并且系统添加一个字符,导致重复。你应该总是返回false。 – 2014-10-30 21:39:41

+0

修复了有关重复值的问题:)谢谢! – Erik 2014-10-30 21:47:51

回答

0

否则使用正则表达式可能有助于只是你的代码一点点这个同样的过程。

这是一个使用正则表达式来阻挡任何不是一把手的例子:

$(document).ready(function() { 
 

 
    $('body').on('keydown', 'input[name="textfield-correction-temperature"]', function(c) { 
 

 
     if (String.fromCharCode(c.keyCode).replace(/[^0-9]/g, '') == '') { 
 
      return false; 
 
     } 
 

 
    }); 
 
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> 
 
<input type="text" name="textfield-correction-temperature" tabindex="0" maxlength="6">

你可以,当然,修改正则表达式根据自己的喜好,轻松更换可接受/不可接受的字符。

+0

谢谢,但我怎么能让数字与正则表达式的数字键盘上? – Erik 2014-10-31 12:25:36

+0

我在帖子中包含的jsfiddle应该显示它使用数字键盘的示例。其他键码的正则表达式(如backspace)可以在这里找到(http://regexlib.com/CheatSheet.aspx)。 – 2014-10-31 20:00:43