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

标签 javascript jquery input internet-explorer-8

我从另一篇已关闭的帖子中获取了一段代码片段,除了某个方面之外,它基本上运行良好。

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

关于javascript - 防止字母的按键功能 - 如何在输入按键之前加载功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30841142/

相关文章:

java - 如何通过输入将尽可能多的元素添加到数组列表中?

javascript - 使前景透明,但背景不透明

javascript - 适应性电子表格数据收集

javascript - 如何在点击时在真/假之间切换

Angular Material 2 提交时嵌套表单验证

c - 如何从c中的标准输入读取长度未知的字符流

javascript - 如何通过 JavaScript 显示错误消息?

javascript - JS RegEx .replace() 条件模式和子组

javascript - 如何使用复选框启用选项并通过本地存储保存它们?

jquery - 防止 Bootstrap 模式重复的ajax调用?