Javascript 检查用户是否正在输入时间格式?例13:00

Javascript 检查用户是否正在输入时间格式?例13:00,javascript,jquery,Javascript,Jquery,基本上,我想有一个输入,当模糊时,将检查输入,以确保它的格式 [24小时]:[分钟] 例如13:00或15:30 所以我想我必须把它分成三部分,检查第一位在0到24之间,然后检查它有分号,然后检查它有一个0到60之间的数字 更复杂的是,如果用户输入19,它将在19:00完成 我正在使用jQuery-fwiw,但是常规代码是可以的,例如,到目前为止,我正在使用这段工作正常的代码进行转换。投入: tempval = $(this).val().replace(".", ":"); $(this).v

基本上,我想有一个输入,当模糊时,将检查输入,以确保它的格式

[24小时]:[分钟]

例如13:00或15:30

所以我想我必须把它分成三部分,检查第一位在0到24之间,然后检查它有分号,然后检查它有一个0到60之间的数字

更复杂的是,如果用户输入19,它将在19:00完成

我正在使用jQuery-fwiw,但是常规代码是可以的,例如,到目前为止,我正在使用这段工作正常的代码进行转换。投入:

tempval = $(this).val().replace(".", ":");
$(this).val(tempval);
不知道从哪里开始,如果有人能推荐我一些阅读,那就太棒了,谢谢

([0-1]?[0-9]| 2[0-3]):([0-5][0-9])

我认为这就是您要寻找的正则表达式(但不是专门针对javascript)

这个网站有大量关于特定语言正则表达式的信息!干杯

([0-1]?[0-9]| 2[0-3]):([0-5][0-9])

我认为这就是您要寻找的正则表达式(但不是专门针对javascript)


这个网站有大量关于特定语言正则表达式的信息!干杯

有很多小部件已经处理了时间验证-尝试搜索“jQuery时间小部件”-看起来不错。

有很多小部件已经处理了时间验证-尝试搜索“jQuery时间小部件”-看起来不错

var re = /^(\d+)(:\d+)?$/;
var match = re.match(yourstring);
现在,如果匹配成功,
match
是一个包含匹配片段的数组:
match[0]
是整个
yourstring
(您不关心这一点),
match[1]
在冒号之前有数字(如果有冒号,其他只是数字),
match[2]
如果存在,则在冒号后加上数字。因此,现在您只需要在
match[1]
上执行数值测试,并可能在
match[2]
减去前导冒号后执行数值测试,以确保数字正确无误

现在,如果匹配成功,
match
是一个包含匹配片段的数组:
match[0]
是整个
yourstring
(您不关心这一点),
match[1]
在冒号之前有数字(如果有冒号,其他只是数字),
match[2]
如果存在,则在冒号后加上数字。因此,现在您只需要在
match[1]
上执行数值测试,并可能在
match[2]
减去前导冒号后执行数值测试,以确保数字正确无误。

我建议使用这种方法首先可以防止输入错误

免责声明:我自己没有使用过该插件,只是通过关键字“屏蔽输入”找到了它。

我建议使用这种方法,首先可以防止错误的输入


免责声明:我自己没有使用过该插件,只是通过关键字“屏蔽输入”找到了它。

非常感谢-这看起来很棒,但不幸的是,如果可能的话,我宁愿不使用小部件,因为用户不太懂技术,我认为只需输入文本(并使用Javascript进行验证/编辑)可能比使用某种令人印象深刻但有点混乱的选择器要好。同样值得注意的是,他们必须选择14个不同的时间,因此他们可以选择的速度非常重要。谢谢-这看起来很棒,但不幸的是,如果可能的话,我宁愿不使用小部件,因为用户的技术水平不高,我认为简单地输入文本(并使用Javascript进行验证/编辑)可能比使用某种令人印象深刻但有点混乱的选择器要好。同样值得注意的是,他们必须选择14个不同的时间,因此他们可以选择的速度非常重要。干杯,汉克斯,只是试着这么做。。。如果($(this+“:regex('([0-1]?[0-9]| 2[0-3]):([0-5][0-9]))){alert('is fine');}。。。出于某种原因,它总是显示“它起作用了!”即使它不应该:(尝试这样的东西…如果(this.match(/^([0-1]?[0-9]| 2[0-3]):([0-5][0-9])$/){alert('is fine');}啊,非常感谢Natso-希望我现在就开始使用正则表达式,因为我知道如何实现它们,干杯:)谢谢,刚刚尝试过这样实现它。。。如果($(this+“:regex('([0-1]?[0-9]| 2[0-3]):([0-5][0-9]))){alert('is fine');}。。。出于某种原因,它总是显示“它起作用了!”即使它不应该:(尝试这样的东西…如果(this.match(/^([0-1]?[0-9]| 2[0-3]):([0-5][0-9])$/){alert('is fine');}啊,非常感谢Natso-希望我现在就开始使用正则表达式,因为我知道如何实现它们,干杯:)非常感谢alex,出于某种原因,我没有想到像这样拆分它,但这是一个伟大的解决方案,我现在将研究!非常感谢alex,出于某种原因,我没有想到要这样分开它,但这是一个伟大的解决方案,我现在将研究!这可能是绝对完美的-谢谢!如果可能的话,我很想自己去做,当我有更多的时间时,我可能会重新访问代码,但我认为这可能是目前最理想的使用方式!谢谢:)这可能是绝对完美的-谢谢!如果可能的话,我很想自己去做,当我有更多的时间时,我可能会重新访问代码,但我认为这可能是目前最理想的使用方式!谢谢:)