我正在开发时间选择器,并希望限制用户输入时间超过 23:59
。我正在尝试使用正则表达式,但没有成功
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;
});
它没有给出任何错误,但无法弄清楚发生了什么。
非常感谢任何帮助。
谢谢
最佳答案
您可以根据每个字符自己的正则表达式来测试它;
尝试
$("#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/