2014-09-22 53 views
0

我想只允许在文本框中输入数字[0-9]。如果输入了字母或特殊字符,我不希望它显示在文本框中。目前我的代码如下:JQuery只允许使用键码的文本框中的数字输入

$('#TEXTBOX').on("keydown", function(event){ 
    var keyCode = event.which; 
    if(!((keyCode > 47 && keyCode < 58) || (keyCode > 95 && keyCode < 106) || keyCode == 08)){ 
     event.preventDefault(); 
    } 
}); 

我有几个问题。

  1. 该功能仍允许特殊字符[即(SHIFT + 1)给出了!(SHIFT + 2)给出了@]我不希望这些组合键,以便插入到文本框中

  2. 我正在使用幻数。我宁愿不使用魔术数字和逻辑,但这是我能够得到输入验证工作的唯一方法....是否有其他方法的任何建议?

我主要关心的是我的第一个特殊字符问题。

+0

我认为这个问题已经被问了很多次,但我就是无法找到链接 – andrex 2014-09-22 14:54:37

+0

你可以使用[event.shiftKey](http://www.w3schools.com/jsref/event_shiftkey.asp) – Stryner 2014-09-22 14:55:17

+1

可能的重复[如何只允许在数字(0-9)在HTML输入框使用jQuery?](http://stackoverflow.com/questions/995183/how-to-allow-only-numeric-0-9-in-html-inputbox-using- jQuery) – andrex 2014-09-22 14:55:40

回答

0
$('#TEXTBOX').on("keydown", function(event){ 
    var keyCode = event.which; 
    var charCode = (event.charCode) ? event.charCode : ((event.keyCode) ? event.keyCode: ((event.which) ? evt.which : 0)); 
    var char = String.fromCharCode(charCode); 
    var re = new RegExp("[0-9]", "i"); 
    if (!re.test(char)) 
    { 
     event.preventDefault(); 
    } 
}); 
0

用作

$('#TEXTBOX').on("keydown", function(event){ 
    if(event.shiftKey) 
     return false; 
    var keyCode = event.which; 
    if(!((keyCode > 47 && keyCode < 58) || (keyCode > 95 && keyCode < 106) || keyCode == 08)){ 
     event.preventDefault(); 
    } 
}); 
+0

这仍然允许!#$%@与shift +数字组合... – ola 2014-09-22 15:26:14

0
$(document).ready(function() { 
    $("#txtboxToFilter").keydown(function (e) { 
     // Allow: backspace, delete, tab, escape, enter and . 
     if ($.inArray(e.keyCode, [46, 8, 9, 27, 13, 110, 190]) !== -1 || 
      // Allow: Ctrl+A 
      (e.keyCode == 65 && e.ctrlKey === true) || 
      // Allow: home, end, left, right, down, up 
      (e.keyCode >= 35 && e.keyCode <= 40)) { 
      // let it happen, don't do anything 
       return; 
     } 
     // Ensure that it is a number and stop the keypress 
     if ((e.shiftKey || (e.keyCode < 48 || e.keyCode > 57)) && (e.keyCode < 96 || e.keyCode > 105)) { 
      e.preventDefault(); 
     } 
    }); 
}); 
+1

请考虑添加一些解释如何以及为什么您的代码片段会回答OP问题。 – 2015-04-19 10:19:03

+0

正如ola所述,上面的代码拒绝除了我在代码中提到的数字,小数和键作为注释之外的任何其他键组合。我希望这很清楚。如果有任何疑问仍然存在,请随时提问。 只需将这个jQuery文件添加到您的JSP,pHp页面,结果将在那里供您查看。 – Para 2015-05-03 16:27:18

0

工作对我来说(只允许使用数字)

  var key = e.charCode || e.keyCode || 0; 

      alert(key); 

      if (key < 48 || key > 58) 
       return false; 
相关问题