«Объект не поддерживает свойство или метод 'shift'" в IE на Focus для JQuery Datepicker (только после изменения месяца / года) - PullRequest
0 голосов
/ 07 мая 2019

У меня есть JQuery Datepicker, использующий директиву AngularJS, datepiker отлично работает в Chrome / FireFox / Edge, но частично работает в IE.

Проблема в том, что календарь выбора даты появится при вводе ввода, вы можете выбрать дату, она закрывается, выбрать другую, отлично. Но только если дата относится к текущему месяцу / году, как только вы измените месяц или год, вы можете выбрать дату изначально, и она будет отображаться во входных данных, но любые последующие попытки заставить календарь казаться неудачным, щелкая в введите результаты в консоли ошибки:

Объект не поддерживает свойство или метод 'shift'

var App = angular.module('App', ["ui.bootstrap"]).config(['$httpProvider', function ($httpProvider) {   

}]);

App.controller('Form', function ($scope, $http, $timeout, $filter) {});

App.directive('datepicker', function ($timeout) {
  var linker = function (scope, element, attrs, ngModelCtrl) {
      scope: {
          myval: '='
      }
      $timeout(function () {
          $(element).datepicker({
              dateFormat: "DD, d MM, yy",
              yearRange: '1900:+0',
              defaultDate: new Date(2000, 0, 1),
              changeMonth: true,
              changeYear: true,
              //showAnim: "fold",
              onSelect: function (date) {
                  ngModelCtrl.$setViewValue(date);
                  scope.$apply();
              },
              beforeShow: function (element, datepicker) {
                  if (attrs.minDate) {
                      angular.element(element).datepicker("option", "minDate", attrs.minDate);
                  }
                  if (attrs.maxDate) {
                      angular.element(element).datepicker("option", "maxDate", attrs.maxDate);
                  }
              }
          });
      });
  };

  return {
      restrict: 'A',
      require: 'ngModel',
      transclude: true,
      link: linker,
  };

});
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/themes/smoothness/jquery-ui.css">

<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.4.0/jquery.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.12.1/jquery-ui.min.js"></script>
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.23/angular.min.js"></script>

<div ng-app="App">
<div ng-controller="Form">
<input datepicker id="DPID" type="text" min-date="-43800" max-date="-4840" ng-model="Date1" class="form-control" />
</div>

Ответы [ 3 ]

1 голос
/ 08 мая 2019

Я воспроизвожу проблему на своей стороне, похоже, проблема связана с версией JQuery, вы используете версию JQuery 3.4.0. Пожалуйста, попробуйте использовать следующую ссылку JQuery:

<script src="https://code.jquery.com/jquery-1.12.4.js"></script>
0 голосов
/ 09 мая 2019

У меня тоже была такая же проблема. После перехода на jQuery 3.4.1 ошибка больше не возникает.

0 голосов
/ 07 мая 2019

Версия 3.0 фреймворка jQuery JavaScript [является] первой версией, в которой абсолютно отсутствуют обходные пути для старых браузеров Internet Explorer (IE6-8). 1

От Microsoft: 2

Начиная с 12 января 2016 г. техническая поддержка получает только самая последняя версия Internet Explorer, поддерживаемая для поддерживаемой операционной системы.обновления для поддержки и безопасности, как показано в следующей таблице:

 Windows Desktop Operating Systems   Internet Explorer Version
 ---------------------------------   -------------------------
 Windows Vista SP2 *                 Internet Explorer 9
 Windows 7 SP1                       Internet Explorer 11
 Windows 8.1 Update                  Internet Explorer 11
 Windows 10**                        Internet Explorer 11

* Этот продукт больше не поддерживается.Посетите сайт жизненного цикла, чтобы узнать даты окончания поддержки и информацию о миграции.

** В Windows 10 имеется Microsoft Edge.Microsoft рекомендует использовать Microsoft Edge в качестве браузера по умолчанию и поддерживает Internet Explorer 11 для обратной совместимости.

...