Jquery – 在表单上validation时间值 ​​- 正确的方法?

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

根据事物的外观,它建议使用addMethod并使用regexpess值来检查时间应该是什么样的。

但是决定查看jquery.validate.js以及如何检查dateISO,它看起来要容易得多,所以我复制了与dateISO相关的所有数据并将其称为timeISO并更改了字符串以validation时间并使用以下内容时间刺痛

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

是否有一些理由不应该修改jquery.validate.js并按照我的方式进行操作? 只是有点担心,因为我在谷歌和这个论坛上的所有搜索从未建议过。

您可以向jQuery.validate添加自定义方法。 可能有一个可用,但我编码这个24小时时间格式validation作为一个例子:

 $.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."); 

小提琴

文档 。

您还可以在单​​个正则表达式( 源 )中对其进行总结:

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

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

  

小提琴

如果您需要与旧版浏览器兼容,请继续使用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."); 

演示

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

有两种validation: “time12h”“time”

修改插件核心使得更新到插件的新版本变得更加困难,而无需替换您的修改,并且很少是个好主意。

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