用于防止字母的Keydown函数 - 如何在输入键之前加载函数

时间:2015-06-15 09:00:07

标签: javascript jquery input internet-explorer-8

我从一个不同的封闭帖子中获取了一个代码片段,除了一个方面,它主要运作良好。

  1. 我有一个输入字段,我只需要数字
  2. 我需要允许使用句号
  3. 下面的代码可以很好地实现上述功能
  4. 问题是在输入字段输入内容之前不会调用该函数
  5. 不幸的是,这意味着可以输入特殊字符或字母,然后触发运行
  6. 的功能

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

    值得注意的是,我在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();
        }
    });
    

    }

2 个答案:

答案 0 :(得分:2)

你没有打电话给这个功能!要么像这样在$(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" />

答案 1 :(得分:0)

像这样调用加载函数

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