Как исправить региональные настройки для jQuery datepicker, чтобы он работал в Firefox и IE7?
Я с помощью jQuery с datepicker и MVC4 с asp.net . Datepicker работает в Firefox, но в IE7 я получаю сообщение через asp.net проверка того, что поле не является датой.
это код для datepicker
if (!Modernizr.inputtypes.date) {
$(function() {
$.datepicker.setDefaults($.datepicker.regional['en-GB']);
$(".datefield").datepicker();
});
}
Это моя настройка глобализации в Интернете.config
<globalization uiCulture="en-GB" culture="en-GB" />
например. в Firefox дата отображается как строка" 19/03/2012 " и принимается asp.net настройка проверки (на стороне клиента и сервера). В IE7 в та же строка даты не принимается на клиенте. Если я изменю его на "03/19/2012", клиент примет дату, но затем сервер выдаст исключение - " InvalidOperationException. Объект Nullable должен иметь значение."
моя viewModel использует нулевое DateTime, которое я приведу к ненулевому DateTime в действии post контроллеров. Это работает в Firefox, но в IE7 значение для даты из viewModel равно null. В чем проблема?
2 ответов
следующая строка ничего не делает:
$.datepicker.setDefaults($.datepicker.regional['en-GB']);
если не указывать соответствующий языковой файл который не включен по умолчанию в ASP.NET шаблон MVC 4.
вы можете попробовать установить формат явно:
$.datepicker.setDefaults({ dateFormat: 'dd/mm/yy' });
но это касается только того, как дата должна быть отформатирована после ее выбора в datepicker. Это не имеет ничего общего с проверкой.
проверка на стороне клиента выполняется с помощью jquery.validate
плагин, который, в свою очередь, использует либо настроенную в настоящее время культуру браузера (что может объяснить расхождения, которые вы наблюдаете между FF и IE, например, один может быть настроен на использование en-GB и другой en-US) или даты ISO.
вы можете переопределить эту пользовательскую проверку и использовать свой пользовательский формат, чтобы гарантировать, что это будет работать через браузер:
if (!Modernizr.inputtypes.date) {
$(function () {
$.datepicker.setDefaults({ dateFormat: 'dd/mm/yy' });
$('.datefield').datepicker();
});
jQuery.validator.addMethod(
'date',
function (value, element, params) {
if (this.optional(element)) {
return true;
};
var result = false;
try {
$.datepicker.parseDate('dd/mm/yy', value);
result = true;
} catch (err) {
result = false;
}
return result;
},
''
);
}
файлы локализации Jquery доступны по адресу:
http://nuget.org/packages/jQuery.UI.i18n
просто наберите :
установить-пакет jQuery.ПОЛЬЗОВАТЕЛЬСКИЙ ИНТЕРФЕЙС.как i18n и добавьте ссылку на скрипт на "Scripts/jquery-ui-i18n.js"
из консоли диспетчера пакетов, то это будет работать: $.элемент управления datepicker.setDefaults($.элемент управления datepicker.региональный ['en-GB']);