AngularJS - Bootstrap Datepicker - 格式设置为' mm-yyyy'但允许用户输入日期' mm-yy'格式

时间:2014-08-19 15:11:28

标签: jquery angularjs twitter-bootstrap datepicker

我在一个angular指令中包装了bootstrap datepicker,并在文本框中使用了它。除验证部分外,一切似乎都可以正常工作。

我已将其设置为接受'mm-yyyy'格式的日期,但它仍允许我覆盖并手动输入'mm-yy'或'mm-somenumber'中的日期。

如何阻止用户以“mm-yyyy”以外的格式输入日期?

这是Plunker link

要查看此问题,请从datepicker中选择一个日期,然后通过键入“mm-yy”格式的日期并按Tab键覆盖它。你可以看到文本框保留'mm-yy'格式而不是强制'mm-yyyy'格式。

 <input type="text" ng-model="date" datepicker/>

    app.directive('datepicker', [function () {
            return {
                restrict: 'A',
                require: 'ngModel',
                link: function (scope, element, attrs, ngModelCtrl) {

                    element.datepicker({
                        format: "mm-yyyy",
                        minViewMode: 1,

                        //viewMode: "months",
                        //minViewMode: "months",

                        orientation: "top left",
                        autoclose: true,
                        onSelect: function (date) {
                            ngModelCtrl.$setViewValue(date);
                            scope.$apply();
                        }
                    });
                }
            };
        }]);

由于

1 个答案:

答案 0 :(得分:1)

您可以像这样设置startDateendDate

element.datepicker({
  format: "mm-yyyy",
  minViewMode: "months", // or 1
  startDate: "01-1000",
  endDate: "12-9999",
});

示例Plunker: http://plnkr.co/edit/2jTxvNkWy7AmQgnZ9G0R?p=preview

我认为格式字符串中的yyyy并不代表4位数字,但它意味着一整年的数字。