Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jquery将输入验证为八个整数和两个小数_Jquery_Regex_Validation - Fatal编程技术网

Jquery将输入验证为八个整数和两个小数

Jquery将输入验证为八个整数和两个小数,jquery,regex,validation,Jquery,Regex,Validation,我尝试过这段代码,但我想我的正则表达式有一个错误,因为它总是true 除了正则表达式之外,我还遇到了keypress的问题,因为我在添加新字符之前测试值,我不想使用keyup,因为我不知道最后一个字符添加到了哪里(用户不会总是在输入字段的末尾输入字符) 我希望有一个好的解决方案,谢谢 $('.myInputField').keypress(function(){ var val = $(this).val(); var regexTest = /^[0-9]{0,8}[.][0-

我尝试过这段代码,但我想我的正则表达式有一个错误,因为它总是
true

除了正则表达式之外,我还遇到了
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
是限制数字的捷径

请考虑不要使用<代码>按键>代码>此-<代码> KEYUP (更好)或<代码>更改(最佳)将是其他选项考虑。

如果你需要“极端响应”的反馈(不能只使用<代码>变更<代码>),考虑这样做(请使用比我在例子中使用的简单CSS更好的方法):


注意:我还更改了代码,因此如果您在输入中输入
,我们希望您在小数点后至少输入一位数字。如果您确实不想进行此编辑,请将
\d{1,2}
更改为
\d{0,2}

,您知道如何克服按键问题吗?可以使用change()代替kepress()每当文本框的值被更改时,该命令就会运行hanks,但如果输入无效,我不想让用户从输入字段中调出焦点,因此我不能使用change。
$('.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');
  }
});