javascript - 限制日期时间选择器上的过去日期

标签 javascript jquery angularjs datepicker

我在限制我的某些 datetimepicker 时没有遇到问题,但这个是持久的,我正在尝试在 angularjs 中执行此操作,并且 datetimepicker 位于数据表内,我将其设置如下:

         {
            data: "next_action_date",
            name: "next_action_date",
            render: (data, type, row, meta)->
              initValue = data
              if data
                initValue = "'" + data + "'"
              if row.is_editable
                return '<div class="input-control text" data-role="datepicker"
                           ng-controller="ContactDateCtrl"
                           ng-init="init(' + row['pk'] + ', ' + initValue + ')" data-format="mmmm d, yyyy">
                          <input type="text" ng-model="contactDate" ng-change="onChange()">
                          <button class="button"><span class="mif-calendar"></span></button>
                      </div>';
              else
                return data;
          }

所以这是datatable中的一列,我在其中放置了datetimepicker,所以在 Controller 中我正在做这样的事情:

(function() {
  var app;

  app = angular.module('cms.sales');

  app.controller('ContactDateCtrl', [
    '$scope', '$http', function($scope, $http) {
      var nextContactDateUpdateFailed, nextContactDateUpdateSuccess;
      $scope.contactDate = null;
      $scope.leadContactPk = null;
      $scope.init = function(leadContactPk, nextContactDate) {
        nextContactDate = new Date();
        $scope.leadContactPk = leadContactPk;
        if (nextContactDate) {
          return $scope.contactDate = nextContactDate.getFullYear() + '-' + (nextContactDate.getMonth() + 1) + '-' + nextContactDate.getDate();
        } else {
          return $scope.contactDate = "";
        }
      };
      $scope.onChange = function() {
        var data;
        data = {
          contact_date: $scope.contactDate,
          lead_pk: $scope.leadContactPk
        };
        return $http.post("/sales/update_contact_date/", data).then(nextContactDateUpdateSuccess, nextContactDateUpdateFailed);
      };
      nextContactDateUpdateSuccess = function() {
        return ClientNotifications.showNotification("Success", "Next communication date was updated", "success");
      };
      return nextContactDateUpdateFailed = function() {
        return ClientNotifications.showNotification("Alert", "Failed to update next communication date", "alert");
      };
    }
  ]);

}).call(this);

现在这并不限制我的datetimepicker,它只是返回这个时间格式2017-5-23,而且我不确定还能做什么我可以做任何其他事情来使此限制起作用,我正在使用 metroui datetimepicker 在我的项目中,任何人都可以帮我正确限制它,谢谢。

最佳答案

只需添加格式

$(function(){
   $("#datepicker").datepicker({
   format: 'mmmm d, yyyy',
    minDate:new Date(Date.now()-(86400000 * n)) // just for min date and 'n' is the number of previous days to be allowed
   });
});

或者自定义输入的ng-model。

只要在 if 条件下做这样的事情

var tempDate = nextContactDate.toString().split(' ');
tempDate = tempDate[1] + " " + tempDate[2] + ", " + tempDate[3];
$scope.tempDate = tempDate;
$scope.contactDate = nextContactDate;

如果将日期更改为字符串,则可能无法在 Controller 中进行处理。因此,将其存储在临时 $scope.tempDate 中以在 View 中显示,并使用主变量,即 $scope.contactDate 来执行逻辑。

确保输入的 ng-model 应该是 $scope.tempDate

首选更好

关于javascript - 限制日期时间选择器上的过去日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44129236/

相关文章:

javascript - Flash Lite 3.1 + javascript

javascript - 如何在运行时交换 jquery css

javascript - AngularJS/NodeJS/RESTEasy+JBoss/LDAP 堆栈的身份验证机制

javascript - 查询 : how to prevent div function?

javascript - 如何在下拉列表中显示图像?

angularjs - 以编程方式设置 Angular UI 模态高度和宽度

javascript - 向 Express 服务器发出多个 AngularJS Post 请求?服务器在第二次发布请求时崩溃

javascript - setInterval 如何停止它以加载不同的 css 来工作

javascript - 使用 React 和 Express

php - 为什么我的图像翻转会这样?