【问题标题】:AngularJS - Bootstrap Datepicker - Format set to 'mm-yyyy' yet allows users to enter date in 'mm-yy' formatAngularJS - Bootstrap Datepicker - 格式设置为“mm-yyyy”,但允许用户以“mm-yy”格式输入日期
【发布时间】:2014-08-19 15:11:27
【问题描述】:

我已经在一个角度指令中包装了引导日期选择器,并在一个文本框上使用了它。除了验证部分外,一切似乎都正常。

我已将其设置为接受“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();
                        }
                    });
                }
            };
        }]);

谢谢

【问题讨论】:

    标签: jquery angularjs twitter-bootstrap datepicker


    【解决方案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位数字,而是一个完整的年份。

    【讨论】:

    • 谢谢。明天我会试一试,并会及时通知您。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-30
    • 1970-01-01
    • 2022-01-25
    • 2012-03-05
    • 1970-01-01
    相关资源
    最近更新 更多