如何使用jquery在时间范围内验证<input type =“time”/>?

时间:2014-02-19 17:13:53

标签: jquery html5 forms validation

我有一个<input type="time">的表单,我希望它根据特定的时间范围进行验证,例如它应该只在08:00到22:00之间验证。

我尝试过使用最小值/最大值,但这不适用于验证...

<input type="time" min="0800" max="2200" required>

我正在使用jQuery Validation Plugin

关于如何实现这一目标的任何提示以及它是否可能实现?

查看此JSFiddle,了解我正在努力完成的任务。

谢谢:)

2 个答案:

答案 0 :(得分:2)

您可以添加自定义验证程序,例如:

jQuery.validator.addMethod("timey", function(value, element) {
    var hour = parseInt(value.substring(0,2));
    return hour > 7 && hour < 23;
}, "Invalid time");

然后将其应用到您的领域。但要注意字段名称 - 看起来你发布的JSFiddle没有正确设置。

正确设置最小值和最大值(min="08:00:00" max="22:00:00")更优雅,但验证器似乎没有正确处理边缘情况,完全拒绝8:00和22:00。

JSFiddle demo

答案 1 :(得分:0)

首先,如here所述,最小/最大属性应格式化为日期时间值,如min="08:00:00"max="22:00:00"


对于jQuery验证,请查看here

date: function( value, element ) {
    return this.optional(element) || !/Invalid|NaN/.test(new Date(value).toString());
},

并在给定输入字符串中进行时间验证:

$.validator.addMethod("time", function (value, element) {
    return this.optional(element) || /^(([0-1]?[0-9])|([2][0-3])):([0-5]?[0-9])(:([0-5]?[0-9]))?$/i.test(value);
}, "Please enter a valid time.");