Проверка даты и даты и времени с помощью средства выбора даты и времени Bootstrap, подключаемого модуля проверки Jquery в приложении Asp.Net MVC4

В настоящее время я разрабатываю веб-приложение MVC Asp.Net 4.6 с Bootstrap 3.1.1, выбор даты и времени Eonasdan v4.7.14 и плагин проверки jquery v1.14.0.

И у меня есть некоторые проблемы с проверкой даты.

  • Моя модель выглядит так:

    public class PersonModel{
        ...
    
        [Required]
        [Display(Name = "Date of Birth")]
        public DateTime? DateOfBirth { get; set; }
    
        ...        
    }
    
  • Мой взгляд выглядит так:

    <div class="form-group">
        @Html.LabelFor(x => x.DateOfBirth):
        <span class="text-danger"><b>*</b></span>
        <div class="input-group datepicker">
            <span class="input-group-addon">
                <span class="glyphicon glyphicon-calendar"></span>
            </span>
            @Html.TextBoxFor(x => x.DateOfBirth, new {@class = "form-control", @data_date_format = "DD/MM/YYYY", @placeholder = "DD/MM/YYYY"})
        </div>
        @Html.ValidationMessageFor(x => x.DateOfBirth, "", new { @class = "text-danger" })
    </div>
    
  • Связанный код Js для инициализации средства выбора даты и времени:

    (function () {
        // Init bootstrap date/time pickers
        $(".datepicker").datetimepicker({
            useCurrent: false
        });
    })(jQuery);
    

    Используя jQuery.validator, даже если дата выглядит хорошо, я всегда получаю эту ошибку:

    введите здесь описание изображения

    Я знаю, что jQuery.validator отлично работает с jquery.ui.datepicker, но как заставить его работать с bootstrap.datetimepicker?




Ответы (1)


Вы можете переопределить метод date плагина Jquery.validator:

(function () {
    // overrides the jquery date validator method
    jQuery.validator.methods.date = function (value, element) {
        // All dates are valid....
        return true;
    };
})(jQuery);

Поскольку средство выбора даты и времени использует moment.js, вы можете проверить правильность даты следующим образом:

(function () {
    // overrides the jquery date validator method
    jQuery.validator.methods.date = function (value, element) {
        // We want to validate date and datetime
        var formats = ["DD/MM/YYYY", "DD/MM/YYYY HH:mm"];
        // Validate the date and return
        return moment(value, formats, true).isValid();
    };
})(jQuery, moment);
person Thomas    schedule 28.04.2016
comment
Что делать, если я хочу использовать как дату проверки, так и дату и время в одной и той же форме. Вы переопределяете метод даты. - person Kai; 06.05.2019
comment
@Kai, извините, я не могу вспомнить, это старый пост трехлетней давности ... но из второго фрагмента кода я вижу, что одним из допустимых форматов является дата и время, поэтому он должен быть в состоянии проверить как дату, так и дату и время, иметь ты пытался ? - person Thomas; 06.05.2019
comment
Извините, я невнимательно прочитал код, он действительно работает хорошо. Большое спасибо. - person Kai; 06.05.2019
comment
@Кай, не беспокойся. Вы также можете добавить другие форматы, если вам нужно. это работало для меня, но вы можете настроить форматы в зависимости от вашего варианта использования - person Thomas; 06.05.2019