jquery验证八个整数和两位小数的输入
问题描述:
我试过这段代码,但我想我的错误与我的正则表达式,因为它总是true
。jquery验证八个整数和两位小数的输入
除了正则表达式,我还有一个keypress
问题,因为我在添加新字符之前测试该值,我不想使用keyup
,因为我不知道最后一个字符的添加位置(用户不会总是在输入字段的末尾输入字符)。
我将不胜感激一个很好的解决方案,谢谢。
$('.myInputField').keypress(function(){
var val = $(this).val();
var regexTest = /^[0-9]{0,8}[.][0-9]{0,2}|[0-9]{0,8}$/;
var ok = regexTest.test(val);
if(ok)
return true;
else
return false;
答
我想你可能需要一个正则表达式是这样的:
/^\d{0,8}(\.\d{0,2})?$/
您使用.
代替\.
,但.
将匹配任何字符。
?
临近尾端允许你有“.12”或没有它。
\d
是限制数字的捷径。
请考虑不要使用keypress
这个 - keyup
(更好)或change
(最好)将是其他选项来思考。
如果你需要“非常敏感”的反馈(不能只用change
),可考虑做这样的事情(请用更好的方法比简单的CSS我在示例中使用):
$('.myInputField').keyup(function(e){
var val = $(this).val();
var regexTest = /^\d{0,8}(\.\d{1,2})?$/;
var ok = regexTest.test(val);
if(ok) {
$(this).css('background-color', 'green');
} else {
$(this).css('background-color', 'red');
}
});
注:我也改变了代码,这样,如果你在输入输入.
,我们希望你把至少一位小数点以下。如果你真的不想这个编辑,更改\d{1,2}
为\d{0,2}
谢谢,但它仍然无法工作:) – kerbelp 2013-03-24 15:24:58
和你有什么想法如何克服按键问题? – kerbelp 2013-03-24 15:25:26
而不是kepress()你可以使用change()这将运行,只要文本框的值已被更改 – Vortex 2013-03-24 15:31:44