У меня есть форма с <input type="time">
я хочу, чтобы она проверялась на основе определенного таймфрейма, например, она должна проверяться только с 08:00 до 22:00.
Я попытался использовать значения min/max, но это не работает для проверки...
<input type="time" min="0800" max="2200" required>
Я использую плагин проверки jQuery.
Любые советы о том, как я могу это сделать, и если это возможно?
Проверьте этот JSFiddle, чтобы узнать, чего я пытаюсь выполнить.
Благодаря :)
Вы можете добавить пользовательский валидатор, например:
jQuery.validator.addMethod("timey", function(value, element) {
var hour = parseInt(value.substring(0,2));
return hour > 7 && hour < 23;
}, "Invalid time");
Затем примените это к своему полю. Будьте осторожны с именами полей though-, похоже, что JSFiddle, который вы опубликовали, настроен неправильно.
Правильная настройка min и max (min="08:00:00" max="22:00:00"
) более элегантна, но валидатор, похоже, не справляется с крайними случаями должным образом, отклоняя ровно 8:00 и 22:00.
Прежде всего, как указано здесь, атрибуты min/max должны быть отформатированы как значения datetime, такие как min="08:00:00"
и max="22:00:00"
.
Для проверки jQuery см. Здесь:
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.");