JQuery只允许使用键代码在文本框中输入数字

时间:2014-09-22 14:52:22

标签: javascript jquery numeric keycode

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

$('#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. 我正在使用魔术数字。我不想使用魔术数字和逻辑,但这是我能够让输入验证工作的唯一方法....对其他方法有任何建议吗?

  3. 我主要担心的是我对特殊字符的第一个问题。

4 个答案:

答案 0 :(得分: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(); 
    }
});

答案 1 :(得分: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();
    }
});

答案 2 :(得分: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();
        }
    });
});

答案 3 :(得分:0)

为我工作(只允许数字)

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

            alert(key);

            if (key < 48 || key > 58)
                return false;