【问题标题】:Textbox Input Validation文本框输入验证
【发布时间】:2013-06-03 07:03:30
【问题描述】:

我有以下 jQuery 代码,它只允许我在文本框中输入数字:

$('.numbersOnly').keyup(function () {
    if (this.value != this.value.replace(/[^0-9\.]/g, '')) {
    this.value = this.value.replace(/[^0-9\.]/g, '');
}
});

我希望为此添加一些额外的验证,以允许 0 到 10 的范围和小数点后三位。这是我应该使用的代码的正确形式吗?

$('.numbersOnly').keyup(function () {
    if (this.value != this.value.replace(/[^([0-9]|1[0])\.(0[0-9][0-9]|1[0][0])$]/g, '')) {
    this.value = this.value.replace(/[^0-9\.]/g, '');
}
});

【问题讨论】:

  • 不,它不起作用 - 抱歉,我应该添加那个。
  • 不回答问题,但是为了测试你的模式,你应该使用Regexp对象的test方法。

标签: jquery validation input textbox


【解决方案1】:

您问题中的正则表达式无效。请求的模式比“数字”更复杂。而不是用

检查一个匹配的模式
if (this.value != this.value.replace(...

我建议使用匹配的,并且

if ("" != this.value.replace(...

这符合您的需要:([0-9]|10)(\.[0-9][0-9][0-9])?

注意:最后一行中的替换不一定能解决问题,就像在您的第一个示例中那样。

【讨论】:

  • 我对正则表达式不是很有经验 - 我无法让我的新代码进行验证!我已经在 RegexPal 中测试了正则表达式并且它可以工作,但是当我应用它时 - jsfiddle.net/h6skv - 它不起作用!
  • 我清理了一下:jsfiddle.net/h6skv/1。再次 - 它会删除字母和空格,但如果不符合模式则不会修复格式
  • 啊,我知道是不是我错了。有没有办法限制它只允许小数点后三个数字并在此之后停止接受任何输入?
  • 这有点复杂,因为如果有错误我真的不知道它在哪里(如果用户输入 15 他是指 1 还是 5?)。这是一个建议:truncate after 5 characters
  • 实际上,这非常适合我的需求!我想输入的最大值是 10,以便有人可以添加 10.00
猜你喜欢
  • 2015-11-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-04-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多