jquery验证八个整数和两位小数的输入

问题描述:

我试过这段代码,但我想我的错误与我的正则表达式,因为它总是truejquery验证八个整数和两位小数的输入

除了正则表达式,我还有一个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'); 
    } 
}); 

JS FIDDLE EXAMPLE

注:我也改变了代码,这样,如果你在输入输入.,我们希望你把至少一位小数点以下。如果你真的不想这个编辑,更改\d{1,2}\d{0,2}

+0

谢谢,但它仍然无法工作:) – kerbelp 2013-03-24 15:24:58

+0

和你有什么想法如何克服按键问题? – kerbelp 2013-03-24 15:25:26

+0

而不是kepress()你可以使用change()这将运行,只要文本框的值已被更改 – Vortex 2013-03-24 15:31:44