2013-06-03 287 views
0

我有以下的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, ''); 
} 
}); 
+0

嗯,它工作吗? – JNF

+0

不,它不起作用 - 对不起,我应该补充说。 –

+2

不回答这个问题,但为了测试你的模式,你应该使用['test'](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/RegExp/test ?Regexp对象的?redirectlocale = en-US&redirectslug = JavaScript%2FReference%2FGlobal_Objects%2FRegExp%2Ftest)方法。 –

回答

2

您问题中的正则表达式无效。所要求的模式比“一个数字”更复杂。相反,检查与

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

一个 -matching模式我会建议使用匹配的一个

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

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

注:在过去的替换行并不一定能解决问题,就像你在第一个例子中那样。

+0

我对正则表达式不是很有经验 - 我无法让我的新代码验证!我已经在RegexPal中测试过正则表达式,它可以工作,但是当我应用它时 - http://jsfiddle.net/h6skv/ - 它不起作用! –

+1

我把它清理了一下:http://jsfiddle.net/h6skv/1/。再次 - 它将删除字母和空格,但不会修复格式,如果它不符合模式 – JNF

+0

啊,我看到我在那里出错了。有什么办法可以限制它只允许小数点后三位数字,并在此之后停止接受任何输入? –