【问题标题】:Only allow numbers, plus, minus, comma, F5 and more只允许数字、加号、减号、逗号、F5 等
【发布时间】:2014-10-30 21:34:20
【问题描述】:

我试图阻止除数字(字符上方和数字键盘上的那些)和减号 (-) 和加号 (+) 以及逗号 (,) 之外的所有击键。

就像现在一样,它只输入了我输入的两倍(例如 2 是 22),它还将当前值替换为新数字,但对于加号、减号和逗号,它插入 ½、m、和 k。我也想解封网站上常用的典型按键,比如F5、Ctrl+R、Shift+R、delete、home和end,但是不知道怎么解封F5、Shift+R,和 Ctrl + R。

$('body').on('keydown', 'input[name="textfield-correction-temperature"]', function(c) {
    console.log(c.keyCode);
    if(c.keyCode != 107 && c.keyCode != 109 && c.keyCode != 188 && c.keyCode > 31 && (c.keyCode < 48 || c.keyCode > 57)) {
        return false;
    } else {
        var key = String.fromCharCode(c.which);
        $(this).val(key);
    }
});

jsFiddle demo

【问题讨论】:

  • 对于第一个问题:您为不需要的输入返回 false(这没关系),但如果输入有效,则手动添加输入,而不取消它。这意味着你添加一个字符,系统添加一个字符,导致重复。你应该总是返回 false。
  • 解决了重复值的问题 :) 谢谢!

标签: javascript keycode


【解决方案1】:

使用正则表达式执行相同的过程可能有助于简化您的代码。

这是一个使用正则表达式来阻止任何非数字的示例:

$(document).ready(function() {

    $('body').on('keydown', 'input[name="textfield-correction-temperature"]', function(c) {

        if (String.fromCharCode(c.keyCode).replace(/[^0-9]/g, '') == '') {
            return false;
        }

    });
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<input type="text" name="textfield-correction-temperature" tabindex="0" maxlength="6">

当然,您可以根据自己的喜好修改正则表达式,轻松换出可接受/不可接受的字符。

【讨论】:

  • 谢谢,但是我怎样才能让数字键盘上的数字带有正则表达式?
  • 我在帖子中包含的 jsfiddle 应该显示一个使用数字键盘的示例。其他键码(如退格)的正则表达式可以在here找到。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多