Javascript 在输入字段中输入时,angular ui datepicker不允许使用dd.MM.yyyy格式

Javascript 在输入字段中输入时,angular ui datepicker不允许使用dd.MM.yyyy格式,javascript,angularjs,datepicker,angular-ui-bootstrap,Javascript,Angularjs,Datepicker,Angular Ui Bootstrap,我认为描述这个问题的最好方法是引导你进入困境: 这个日期选择器不喜欢我们欧洲人! 首先在日期选择器中选择一个日期。假设今天是10月25日(至少这一天应该大于12)。您会看到datepick格式已设置为dd.MM.yyyy,并且在输入字段中设置的日期中会重新影响该格式。 现在改变年份。这不会显示在日期选择器中。 但是,如果以MM.dd.yyyy格式输入日期,则一切正常 我添加了angular-locale_de-de.js,从Oktober的拼写中可以看出,它似乎很有效。 那么为什么我不能用欧洲

我认为描述这个问题的最好方法是引导你进入困境:

这个日期选择器不喜欢我们欧洲人! 首先在日期选择器中选择一个日期。假设今天是10月25日(至少这一天应该大于12)。您会看到datepick格式已设置为dd.MM.yyyy,并且在输入字段中设置的日期中会重新影响该格式。 现在改变年份。这不会显示在日期选择器中。 但是,如果以MM.dd.yyyy格式输入日期,则一切正常

我添加了angular-locale_de-de.js,从Oktober的拼写中可以看出,它似乎很有效。
那么为什么我不能用欧洲的[正确且合乎逻辑的月前一天]格式输入日期呢?

好的,我已经解决了这个问题。问题在于新的Date([dateString])方法,它只接受某些值。我从第1148行开始编辑ui-bootstrap-tpls-0.6.0.js。正如您所看到的,angular ui团队有一个TODO;-)


好的,我已经弄明白了。问题在于新的Date([dateString])方法,它只接受某些值。我从第1148行开始编辑ui-bootstrap-tpls-0.6.0.js。正如您所看到的,angular ui团队有一个TODO;-)


可以使用角度指令

var app = angular.module('plunker', ['ui.bootstrap']);
app.directive('formatteddate', function ($filter) {
    return {
        link: function (scope, element, attrs, ctrl) {
            ctrl.$parsers.unshift(function (viewValue) {
                return $filter('date')(viewValue,'dd.MM.yyyy');
            });            
        },
        restrict: 'A',
        require: 'ngModel'
    };
});
然后在HTML中使用它

<input type="text" formatteddate="dt.date" .../>

您可以使用角度指令

var app = angular.module('plunker', ['ui.bootstrap']);
app.directive('formatteddate', function ($filter) {
    return {
        link: function (scope, element, attrs, ctrl) {
            ctrl.$parsers.unshift(function (viewValue) {
                return $filter('date')(viewValue,'dd.MM.yyyy');
            });            
        },
        restrict: 'A',
        require: 'ngModel'
    };
});
然后在HTML中使用它

<input type="text" formatteddate="dt.date" .../>


这似乎是angular ui datepicker中的一个错误,而不是您的误用。这似乎是angular ui datepicker中的一个错误,而不是您的误用。这是个好主意,但不幸的是,它似乎不起作用。如果使用日期选择器选择2013年10月25日,然后手动将2013年更改为2014年,则日期选择器中的日期不会更改。这主意不错,但不幸的是,它似乎不起作用。如果使用日期选择器选择2013年10月25日,然后手动将2013年更改为2014年,则日期选择器中的日期不会更改。Max的上述解决方案非常适合格式化日期。但是,由于JavaScript无法以dd.mm.yyyy格式创建新的日期(2013年12月31日),因此仍然必须翻转月份和日期才能工作。一旦将日期格式化为允许创建日期对象,datepicker将继续正常工作。Max的上述解决方案非常适合格式化日期。但是,由于JavaScript无法以dd.mm.yyyy格式创建新的日期(2013年12月31日),因此仍然必须翻转月份和日期才能工作。一旦将日期格式化为允许创建日期对象,datepicker将继续正常工作。