2

我的 Angular 应用程序有一个 Datepicker,它适用于 Google Chrome,但适用于 IE8,当我想选择一个日期(日期选择器打开良好)但它不会更新输入中的日期。

有人对此问题有任何解决方案吗?

这是我的控制器:

angular.module('typeExperimentation', ['ngAnimate', 'ngSanitize', 'mgcrea.ngStrap'])
.config(function ($datepickerProvider, $routeProvider) {
    angular.extend($datepickerProvider.defaults, {
        dateFormat: 'dd/MM/yyyy',
        startWeek: 1,
        autoclose: true,
        maxDate: new Date()
    });

这是我的模板:

<div ng-class="{'has-error' : localForm.DateStatut.$dirty && calForm.DateStatut.$invalid}">


<input type="text" class="form-control " ng-model="status.Status_date" name="DateStatut" bs-datepicker ng-disabled="isDetails">


</div>
4

1 回答 1

0

更新:

找到了更好的方法来做到这一点。在 $.onMouseDown() 中手动触发“点击”事件可以完成这项工作,而无需使用丑陋的“点击”触发器类型(这需要在输入字段上使用点击事件来隐藏日期选择器)。

在您的 html 文件中添加以下行以进行 IE 版本检测:

<!--[if lt IE 9]>
<script>window.lessThanIE9 = true;</script>
<![endif]-->

在 angular-strap 的以下部分修改 $datepicker.$onMouseDown() 函数中的 if 条件:

    angular.module('mgcrea.ngStrap.datepicker', 
            ['mgcrea.ngStrap.helpers.dateParser', 'mgcrea.ngStrap.tooltip'])

从:

    if(isTouch) {

到:

    if(isTouch || window.lessThanIE9) {

旧答案(仅供参考):

正如 'lukashinsch' 在 Github 中提出的 angular-strap 问题中所述(请参阅下面的链接),使用不同的触发器,例如 'click' 是一种解决方法。

https://github.com/mgcrea/angular-strap/issues/406

选项 1. 使用 data-trigger 标签设置触发器:

    <input type="text" bs-datepicker data-trigger="click" ng-model="..." />

选项 2. 在以下模块中更改 angular-strap 库中的默认触发器:

    angular.module('mgcrea.ngStrap.datepicker', 
            ['mgcrea.ngStrap.helpers.dateParser', 'mgcrea.ngStrap.tooltip'])

从:

    trigger: 'focus',

到:

    trigger: 'click',

如果您在许多地方都有日期选择器并且很难更新所有输入,请使用选项 2。

注意:如果您不喜欢在外部单击时模态框保持打开的方式,请通过检查浏览器类型将触发器仅应用于 IE 8。

于 2014-12-12T04:23:54.743 回答