我有一个<input type="time">
的表单,我希望它根据特定的时间范围进行验证,例如它应该只在08:00到22:00之间验证。
我尝试过使用最小值/最大值,但这不适用于验证...
<input type="time" min="0800" max="2200" required>
我正在使用jQuery Validation Plugin。
关于如何实现这一目标的任何提示以及它是否可能实现?
查看此JSFiddle,了解我正在努力完成的任务。
谢谢:)
答案 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。
答案 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.");