2017-02-10 2 views
1

Благодаря JQuery выбора даты (с помощью $datePicker.calendarsPicker) выпуска с MM/dd/yyyy форматом
(enter image description here)datePicker.calendarsPicker проблемы с хромированной версией 56.0.2924.87

с хромированной версией 56.0.2924.87., Это не заселение даты. Я добавил формат "yyyy-MM-dd", который работает.

Теперь проблема, с которой я сталкиваюсь, заключается в том, что если я использую "yyyy-MM-dd" на мой взгляд, то по какой-то причине сборщик дат подходит к августу 2022 года. Я не знаю, как и почему? В консоли я вижу ожидаемые результаты с минимальной и максимальной датой, но каким-то образом пользовательский интерфейс содержит разные данные.

Это что-то общее с $datePicker.calendarsPicker или что-то еще? Здесь используется jQuery 1.8.7.

Вид:

@Html.LabelFor(schedule => schedule.DateString, "Date", new { @for = "requested-fulfillment-date" }) 
@Html.TextBoxFor(schedule => schedule.DateString, new { id="requested-fulfillment-date", type = "date", @class = "date-picker", min = Model.MinOrderDate.ToString("yyyy-MM-dd"), max = Model.MaxOrderDate.ToString("yyyy-MM-dd"), @readonly="readonly" }) 

консоли Результат:

<label for="requested-fulfillment-date">Date</label> 
<input class="date-picker hasCalendarsPicker" id="requested-fulfillment-date" max="2017-03-12" min="2017-02-10" name="ScheduleModel.DateString" readonly="readonly" type="text" value="2017-02-10"> 

enter image description here

UI Результат:

enter image description here

Я попытался следующие подходы, но они не работали:

Подход 1:

this.setDatePickerWidget = function(event, data) { 
    var $datePicker = $("#requested-fulfillment-date", data.element); 
    var min = $datePicker.attr("min"); 
    var max = $datePicker.attr("max"); 
    var date = $datePicker.val(); 

    $datePicker.calendarsPicker({ 
      showTrigger: '.trigger', 
      showAnim: 'fadeIn', 
      minDate: min, 
      maxDate: max, 
      defaultDate: date, 
      **dateFormat: 'yyyy-MM-dd',** 
      onSelect: function() { 
       $.publish('order_date_changed', { date: $("#requested-fulfillment-date").val() }); 
       $("#checkout").prop('disabled', true); 
      } 
     }).prop('type', 'text'); 
    }; 

-2 Подход:

this.setDatePickerWidget = function(event, data) { 
    var $datePicker = $("#requested-fulfillment-date", data.element); 
    var min = $datePicker.attr("min"); 
    var max = $datePicker.attr("max"); 
    var date = $datePicker.val(); 

    $datePicker.calendarsPicker({ 
      showTrigger: '.trigger', 
      showAnim: 'fadeIn', 
      minDate: min, 
      maxDate: max, 
      defaultDate: date, 
      onSelect: function() { 
       $.publish('order_date_changed', { date: $("#requested-fulfillment-date").datepicker({ dateFormat: 'yyyy-MM-dd'}).val() }); 
       $("#checkout").prop('disabled', true); 
      } 
     }).prop('type', 'text'); 
    }; 

Примечание: Если я изменю свой Просмотр следующий следующий сборщик даты начинает работать. Единственная проблема - когда я выбираю другую дату, она отображается как MM/dd/yyyy, но через секунду или два она возвращается обратно к yyyy-MM-dd.

@Html.TextBoxFor(schedule => schedule.DateString, new { id = "requested-fulfillment-date", type = "date", @class = "date-picker", min = Model.MinOrderDate.ToString("MM/dd/yyyy"), max = Model.MaxOrderDate.ToString("MM/dd/yyyy"), @readonly = "readonly" }) 
+0

'вар $ Datepicker = $ ("# запрошенный_номер-исполнение-дата", data.element);' 'data.element' здесь не требуется, так как идентификатор должен быть уникальным для документа ... –

+0

Я не мог найти ссылку на' calendarsPicker' на [сайте jQuery UI] (http://api.jqueryui.com /? s = calendarsPicker). Вы уверены, что не используете другую библиотеку виджетов? –

+0

@MikeMcCaughan http://keith-wood.name/datepick.html, эта библиотека используется. Я добавил последнюю версию с этого сайта, но все еще сталкивался с той же проблемой. Позвольте мне посмотреть, в чем причина этого виджета, если я не найду ничего, что имеет смысл, я буду прямо использовать '$ datepicker'. – CSharper

ответ

0

У меня была аналогичная проблема решена таким образом (надеюсь, что это поможет в):

$('.datapicker').datepicker().datepicker("setDate", new Date()); 
+0

Этот подход подходит для самого календаря, который я не хочу. – CSharper

+0

Хорошо, но вы можете отправлять свои варианты внутри функции datepicker(). Но давайте попробуем: попробуйте установить новый вызов Date() после datepicker(). –

Смежные вопросы