防止字母的按键功能 - 如何在输入按键之前加载功能

Keydown function to prevent letters - How to load function before key is entered

我从另一个封闭的 post 中截取了一个代码片段,除了一个方面之外,它主要工作得很好。

  1. 我有一个输入字段,我只需要输入数字
  2. 我需要允许使用句号
  3. 下面的代码在允许上述情况发生方面非常有效
  4. 问题是只有在输入字段中输入内容后才会调用该函数
  5. 不幸的是,这意味着可以输入特殊字符或字母,然后触发函数 运行

有没有办法确保函数立即 运行 以防止所有特殊字符和字母? (除了句号和数字)

还值得注意的是,我在 IE8 中工作。

function numberValidation(){
  $("#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: Ctrl+C
        (e.keyCode == 67 && e.ctrlKey === true) ||
         // Allow: Ctrl+X
        (e.keyCode == 88 && e.ctrlKey === true) ||
         // Allow: home, end, left, right
        (e.keyCode >= 35 && e.keyCode <= 39)) {
             // 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();
    }
});

}

您没有调用函数!要么像这样在 $(document).ready() 上调用它:

$(document).ready(function(){
   numberValidation();
});

或者,在 $(document).ready() 中输入:

$(document).ready(function () {
  $("#txtboxToFilter").keydown(function (e) {
    // Allow: backspace, delete, tab, escape, enter and .
  });
});

片段

$(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: Ctrl+C
        (e.keyCode == 67 && e.ctrlKey === true) ||
        // Allow: Ctrl+X
        (e.keyCode == 88 && e.ctrlKey === true) ||
        // Allow: home, end, left, right
        (e.keyCode >= 35 && e.keyCode <= 39)) {
      // 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();
    }
  });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.1/jquery.min.js"></script>
<input id="txtboxToFilter" type="text" />

像这样在加载时调用函数

$(function(){
   numberValidation();
});