Как проверить <input type = «time»> в пределах таймфрейма с помощью jquery?

0

У меня есть форма с <input type="time"> я хочу, чтобы она проверялась на основе определенного таймфрейма, например, она должна проверяться только с 08:00 до 22:00.

Я попытался использовать значения min/max, но это не работает для проверки...

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

Я использую плагин проверки jQuery.

Любые советы о том, как я могу это сделать, и если это возможно?

Проверьте этот JSFiddle, чтобы узнать, чего я пытаюсь выполнить.

Благодаря :)

  • 0
    Вы даже пытались или у вас есть попытка показать нам?
  • 0
    Я скоро выложу свой код ...
Показать ещё 4 комментария
Теги:
validation
forms

2 ответа

2
Лучший ответ

Вы можете добавить пользовательский валидатор, например:

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.

Демо-версия JSFiddle

  • 0
    Спасибо! Это прекрасно работает: D
0

Прежде всего, как указано здесь, атрибуты 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.");

Ещё вопросы

Сообщество Overcoder
Наверх
Меню