【问题标题】:ui-bootstrap datepicker not working with min and max dateui-bootstrap datepicker 不适用于最小和最大日期
【发布时间】:2014-05-27 15:41:12
【问题描述】:

我正在使用作为 AngularJS ui-bootstrap 模块一部分的 Datepicket。我正在遵循给出的教程/示例(请参阅http://angular-ui.github.io/bootstrap/#/datepicker),但是当试图阻止用户选择早于今天或从今天起超过 3 个月的日期时似乎无法正常工作,因为这些仍然是可点击的。

这是我认为的日期选择器...我已将 ng-model、min-date 和 max-date 值写入接口以确保它们不为空)

<datepicker ng-model="dt" min-date="minDate" max-date="maxDate" show-weeks="false"></datepicker>
dt = {{ dt }}
minDate = {{ minDate }}
maxDate = {{ maxDate }}

正在返回值....

dt = "2014-04-30T15:31:46.746Z" 
minDate = "2014-05-27T15:31:46.746Z"
maxDate = "2014-08-27T15:31:46.751Z"

这是我的控制器代码...大部分来自 ui-bootstrap 网站上提供的示例

$scope.today = function() {
  $scope.dt = new Date();
};
$scope.today();

$scope.toggleMin = function() {
  $scope.minDate = $scope.minDate ? null : new Date();
};
$scope.toggleMin();

$scope.maxDate  = new Date(new Date().setMonth(new Date().getMonth()+3));

谁能看到我做错了什么?我看不到我犯了什么错字或错误?我在 OS X 10.9.2 上使用 Chrome 34.0.1847.137,所以浏览器兼容性应该不是问题。

【问题讨论】:

标签: angularjs angular-ui-bootstrap


【解决方案1】:

在 datepicker 标签中分别使用 minma​​x 属性代替 min-datema​​x-date .

<input min="p.minStartDate" max="p.maxStartDate" ng-model="p.startDate" datepicker-popup="{{'dd-MM-yyyy'}}"  datepicker-options="p.dateOptions"/>

【讨论】:

  • 不知道为什么这不在文档中。非常感谢:)
  • 对此感到困惑...min-datedemothis plunker 中工作得很好,但在我的应用程序中,使用相同的角度和ui-bootstrap 版本,我无法获得@ 987654326@ 工作,但 min 工作正常。现在已经足够好了,但如果有人有见识,请告诉我。
  • @brandonjp:也许这不在 datepicker 文档中,因为这不是 datepicker 特定的验证器,而是一个“正常”的角度验证器。见docs.angularjs.org/guide/forms,他们提到minmax
  • minmax 验证输入字段。 min-datemax-date 控制日期选择器并禁用超出该范围的日期。
【解决方案2】:

您使用的是哪个版本的 Angular Bootstrap?我注意到我必须升级到 0.11.0 才能获得工作的最小和最大日期。在 0.10.0 中,最小和最大日期对我不起作用。我不得不改用 date-disabled。

【讨论】:

  • 我们赢了!感谢您的回答,升级已经解决了这个问题!
  • 你能告诉我你的数据禁用 Imyers 的实现吗?有同样的问题。
【解决方案3】:
<input type="text" datepicker-popup="{{format}}" 
                            ng-model="dt" is-open="opened" 
                            min="'2014-09-09'" max="'2015-06-22'"
                            datepicker-options="dateOptions" 
                            date-disabled="disabled(date, mode)" 
                            ng-required="true" 
                            close-text="Close" />

它适用于 angular-1.2.8 版本

【讨论】:

    【解决方案4】:

    我无法使 maxmax-date 属性起作用。

    相反,我发现我必须在控件上配置datepicker-options 属性。 Reference here.

    模板

    <input type="text" class="form-control" uib-datepicker-popup="d/M/yyyy" ng-model="ctrl.calendarControl.selectedDate" datepicker-options="ctrl.calendarControl.dateOptions" />
    

    控制器

    self.calendarControl = {
        dateOptions: {
            maxDate: new Date()
        }
    };
    

    【讨论】:

      【解决方案5】:
          $(function () {
              $("[id$=txtpaymentdate]").datepicker({
                  showOn: 'button',
                  buttonImageOnly: true,
                  format: "dd/mm/yyyy",
      
                  todayBtn: "linked",
                  language: "ru",
                  autoclose: true
      
              });
          });
      

      【讨论】:

      • 欢迎来到 Stackoverflow。如我们所见,该问题已用 Angular js 标记。
      猜你喜欢
      • 2017-03-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-08-25
      • 1970-01-01
      • 2021-01-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多