JQuery UI DatePicker не работает в Edit View MVC [duplicate]

Хотя вы можете сделать это с помощью конвертера, есть гораздо лучший вариант: использование эффекта шейдера. Вы найдете реализацию GreyscaleEffect на этой странице .



...


0
задан Tom 5 February 2015 в 18:09
поделиться

4 ответа

, потому что формат по умолчанию для даты - mm / dd / yyyy. ваша дата рассматривается как месяц, тогда она дает ошибку для того, что вам нужно добавить формат культуры.

        CultureInfo culture = (CultureInfo)CultureInfo.CurrentCulture.Clone();
        culture.DateTimeFormat.ShortDatePattern = "dd/MM/yyyy";

        Thread.CurrentThread.CurrentCulture = culture;
        Thread.CurrentThread.CurrentUICulture = culture;

и в вашем js-файле, в котором вы реализуете datepicker, включают код, например

jQuery.validator.methods["date"] = function (value, element) { return true; }

У меня такая же проблема теперь отлично работает для меня, я надеюсь, что она вам поможет.

1
ответ дан Lalji Dhameliya 15 August 2018 в 22:38
поделиться

Для меня просто есть этот код, чтобы переопределить стандартную проверку подлинности JQuery по умолчанию:

$(function () {
   $.validator.methods.date = function (value, element) {
    return this.optional(element) || moment(value, "L", true).isValid();
   }
});
0
ответ дан Minh Nguyen 15 August 2018 в 22:38
поделиться

Существует ряд потенциальных проблем.

Сначала атрибуты [DataType(DataType.DateTime)] и [DisplayFormat(ApplyFormatInEditMode = true, DataFormatString = "{0:dd/MM/yyyy}")] применимы только при использовании @Html.EditorFor() и используются для визуализации реализации браузера HTML5 datepicker (он добавляет атрибут type="date"). Поскольку вы используете jQueryUI datepicker, тогда эти атрибуты не требуются. В любом случае, если вам нужен браузер HTML5 datepicker, формат должен быть DataFormatString = "{0:yyyy-MM-dd}" (формат ISO) для правильной работы. Обратите внимание, что датпикер HTML5 поддерживается только в современных браузерах, а еще не совсем в FireFox ( ссылается на сравнение )

Если вы используете jQueryUI datepicker, тогда это может быть просто

@Html.TextBoxFor(m => m.StartFieldDate, new { @class = "form-control datepicker" })

и установить формат в сценарии datepicker

$('.datepicker').datepicker({ dateFormat: 'dd/mm/yy' });

Сообщение о проверке может быть связано с одной из двух проблем. На стороне клиента jquery-validate.js проверяет дату с использованием формата MM/dd/yyyy. Вы можете переопределить это, чтобы использовать dd/MM/yyyy, включив jquery globalize или добавив следующий скрипт

$.validator.addMethod('date', function (value, element) {
  if (this.optional(element)) {
    return true;
  }
  var valid = true;
  try {
    $.datepicker.parseDate('dd/mm/yy', value);
  }
  catch (err) {
    valid = false;
  }
  return valid;
});
$('.datepicker').datepicker({ dateFormat: 'dd/mm/yy' });

. Другая потенциальная проблема - проверка на стороне сервера. Если культура сервера не принимает даты в формате dd/MM/yyyy (например, <globalization culture="en-AU" uiCulture="en-AU"/>), на сервере может быть выбрана ошибка проверки, и в этом случае вам нужно будет создать пользовательский ModelBinder для DateTime.

Боковое примечание: Я предполагаю, что @Html.ValidationMessageFor(m => m.DataTurno, ..) является опечаткой (модель, которую вы показали, не включает свойство DataTurno) и что ее действительно @Html.ValidationMessageFor(m => m.StartFieldDate, ..)

3
ответ дан Stephen Muecke 15 August 2018 в 22:38
поделиться

Похоже на неправильный формат даты дампикера jQuery, например, упоминание @ataravati.

Попробуйте инициализировать datepicker с помощью опции dateFormat, например:

$(".datepicker").datepicker({ dateFormat: 'dd/mm/yyyy' });

Получить отладку или установите параметр dateFormat после инициализации, например:

//this how to get what is it now
var dateFormat = $(".datepicker").datepicker("option", "dateFormat");
//set right format
$(".datepicker").datepicker("option", "dateFormat", "dd/mm/yyyy");
0
ответ дан teo van kot 15 August 2018 в 22:38
поделиться
Другие вопросы по тегам:

Похожие вопросы: