【问题标题】:How to allow only numbers on a text input but allow commands with JavaScript?如何在文本输入中只允许数字但允许使用 JavaScript 的命令?
【发布时间】:2011-09-20 16:31:21
【问题描述】:

在寻找在文本输入中只允许数字输入的方法时,您通常会得到如下信息:

function keyPressEvent (e) {
    var keyCode = e.which || e.keyCode;
    if (keyCode < 48 || keyCode > 57) {
        return false;
    }
}

但问题是这使得只执行命令的键不起作用。从退格和删除开始,甚至是 ctrl+a 或 f5。我知道我可以为所有这些创建例外,但我认为这将是时间的腰部。有什么简单的方法可以做我想做的事吗?是否有类似检测将添加到文本中的字符,而不是按下的键?

【问题讨论】:

标签: javascript javascript-events


【解决方案1】:

我实际上采用了一种方法,让用户输入/输入他们想要的任何内容,然后手动强制将该值转换为数字。像这样的东西(这是一个 jQuery 项目,但这个想法可以很容易地在没有 jQuery 的情况下重用)。

fieldJq.bind('click keyup change blur focus', function (ev) {
  var curVal = $(this).val();
  $(this).val(curVal.replace(/[^0-9\.]/g, ''));
});

这里的想法是我让他们将他们想要的任何内容放入其中(因此没有机会破坏复制/粘贴等控制命令)但是在对其进行任何值更改后,我会删除任何不是数字的内容或小数点。在这一点上它不是 100% 防火的(10.0.0 不是无效的),但至少最初它确实接近了。如果您不需要浮点支持并且可以从正则表达式中删除 \.,那么您将获得强制数字输入。

【讨论】:

  • 我想这是目前最好的答案,同时我应该等待数字输入类型在大多数浏览器中实现。还是谢谢!
  • 在 IE7 中它总是将光标放在末尾,可以通过在替换前检查来修复: if (curVal.search(/[^0-9\.]/g)>-1)跨度>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-04-12
  • 1970-01-01
  • 2012-10-08
相关资源
最近更新 更多