9

谷歌搜索后,搜索这个网站以及jQuery发现没有简单的方法来验证时间价值。

从外观上看,它建议使用addMethod并使用 regexpess 值来检查时间应该是什么样子。

但是决定查看jquery.validate.jsdateISO 以及如何检查它,它看起来更容易做到这一点,所以我复制了与 dateISO 相关的所有数据并将其命名为 timeISO 并更改了字符串以验证时间并使用以下时间字符串

^([01]\d|2[0-3]):[0-5]\d:[0-5]\d$ 

有什么理由不应该修改jquery.validate.js并按照我的方式去做吗?只是有点担心,因为我在谷歌和这个论坛上的所有搜索都没有被建议过。

4

3 回答 3

16

您可以将自定义方法添加到jQuery.validate. 可能有一个可用的,但我将这个 24 小时格式验证编码为示例:

$.validator.addMethod("time24", function(value, element) {
    if (!/^\d{2}:\d{2}:\d{2}$/.test(value)) return false;
    var parts = value.split(':');
    if (parts[0] > 23 || parts[1] > 59 || parts[2] > 59) return false;
    return true;
}, "Invalid time format.");

小提琴

文档

您还可以将其总结为一个正则表达式(source):

([01]?[0-9]|2[0-3])(:[0-5][0-9]){2}

如果您使用的是 HTML5,则可以使用该pattern属性:

<input type="text" pattern="([01]?[0-9]|2[0-3])(:[0-5][0-9]){2}" 
    required="required" placeholder="hh:mm:ss" />

小提琴

jQuery.validate如果您需要与旧版浏览器兼容,请继续使用该方法:

$.validator.addMethod("time24", function(value, element) {
    return /^([01]?[0-9]|2[0-3])(:[0-5][0-9]){2}$/.test(value);
}, "Invalid time format.");

演示

于 2012-08-19T19:19:27.290 回答
4

我知道已经有一段时间了,但我认为最好的解决方案是检查additional-methods.js库。(您可以从http://jqueryvalidation.org/下载它)

有两个验证:"time12h""time"

于 2015-05-18T03:36:45.480 回答
1

修改插件核心使得在不替换您的修改的情况下更新到新版本的插件变得更加困难,并且很少是一个好主意。

我建议您将自定义代码放在单独的文件中,而不是更改核心代码。

于 2012-08-19T19:02:30.313 回答