【问题标题】:Restricting text fields to numbers将文本字段限制为数字
【发布时间】:2013-10-01 08:32:13
【问题描述】:

我需要将文本字段限制为仅允许数字,因为数据进入数据库,其中字段数据类型是一成不变的,我不希望人们提交货币价值的“£”符号。

我知道我可以使用:

 input type=number and also pattern [0-9] 

但是根据大多数优秀的验证 html 工具 IE 在旧版浏览器中不支持它们,我知道 IE9(和更早版本)不支持 number 并且我确信 Pattern 仅具有有限的支持。难怪 Chrome 和 Mozilla 被广泛使用。

无论如何我可以验证它是否可以在所有浏览器中工作?

【问题讨论】:

标签: html numbers internet-explorer-9


【解决方案1】:

这也适用于石器时代的浏览器

(不适用于ctrl+v 场景)

<input type='text' onkeypress='validate(event)' />

function validate(evt) {
  var theEvent = evt || window.event;
  var key = theEvent.keyCode || theEvent.which;
  key = String.fromCharCode( key );
  var regex = /[0-9]|\./;
  if( !regex.test(key) ) {
    theEvent.returnValue = false;
    if(theEvent.preventDefault) theEvent.preventDefault();
  }
}

Working Fiddle

【讨论】:

  • 为此干杯,我希望尽可能找到一种不涉及 JS 的方法,因为我知道您可以禁用 javascript,但如果那是我必须采用的方式,那就这样吧。
  • @Crouch 据我所知,我认为不使用 JS 是不可能的
  • 没问题,如果 IE 会开发支持与 chrome 和 firefox 相同的浏览器,或者如果人们只是不使用它,这将不是问题。可能是同时使用 html 验证和 JS 解决方案的情况。这样它应该抓住每个人。虽然我有每个人都需要使用的 javascript 日期选择器,所以如果他们禁用了 JS,那么他们的问题不是我的
  • 是的,这就是我可能不得不使用它的原因,如果人们禁用了 JS,我已经使它适用于所有浏览器,这不是我的问题,但不幸的是,我无法弥补所有可能发生的情况。我只能尽力而为。 @captain,无论如何,这是否可以通过链接到外部 js 文件来工作?
  • 贴出的代码不涉及剪切粘贴等非键盘输入法。它似乎没有在 Firefox 上做任何事情,等等。它可能是解决方案组成部分的一部分,但还不够。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-07
  • 1970-01-01
  • 2010-12-07
  • 2015-02-07
  • 2012-07-18
  • 1970-01-01
相关资源
最近更新 更多