jquery - 没有办法将正则表达式应用于时间输入

标签 jquery regex datetime timepicker

我正在开发时间选择器,并希望限制用户输入时间超过 23:59。我正在尝试使用正则表达式,但没有成功

Fiddle Demo

HTML:

<input type="text" id="test1" placeholder="HH:MM"/>

jQuery

$("#test1").keypress(function(e) {
    var regex = ["([01]?[0-9]|2[0-3])",":","[0-5][0-9]"],
    string = $(this).val() + String.fromCharCode(e.which),b = true;
    for (var i = 0; i < string.length; i++) {
        if (!new RegExp("^" + regex[i] + "$").test(string[i])) {
            b = false;
        }    
    }
    return b;
});

它没有给出任何错误,但无法弄清楚发生了什么。

非常感谢任何帮助。

谢谢

最佳答案

您可以根据每个字符自己的正则表达式来测试它;

Fiddle

尝试

$("#test1").keypress(function(event) 
{
   var regexs = [/[0-2]/,/[0-3]/,/:/,/[0-5]/,/[0-9]/];

   var key = event.which;

   var string = $(this).val() + String.fromCharCode(key)

   var characters  = string.split("");

   var passed = true;

   var isBackspace = key === 8;

   var shouldTest = characters.length < 5 && ! isBackspace;

   passed = ! ( characters.length > 5 && ! isBackspace );

   if(shouldTest)
   {
       for (var i = 0; i < characters.length; i++) 
       {
           var character = characters[i];
           var regex = regexs[i];

           var testFailed = ! regex.test(character) ;

           if( testFailed ) 
           { 
               passed = false; 
               break;
           }

       }
   }

   return passed; 
});

关于jquery - 没有办法将正则表达式应用于时间输入,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17653670/

相关文章:

ruby - 如何以编程方式从 Ruby 中的正则表达式中删除 anchor ?

javascript - 在javascript中使用正则表达式解析数组语法

python - 使用 Python 3 的平均年龄计算器

javascript - 我可以用 jquery 触发 Html.ValidationMessageFor 并让它显示我在 JQuery 中定义的一些字符串吗?

javascript - 更大的 jQuery 项目的结构及其原因

javascript - jQuery : How to return an element by the value of a class of its child

mysql - 如何在sql中获取日期和日期时间显示为日、小时、分钟、秒的时间间隔

javascript - 在客户端 Node.js 中包含 JQuery

javascript - 匹配具有唯一数字的字母数字词(不是仅限数字的词)

javascript - 如何使用 moment.js 解析给定的日期字符串?