2

Angular アプリケーション用の Datepicker があります。Google Chrome では問題なく動作しますが、IE8 では日付を選択したいときに (datepicker がうまく開きます)、入力の日付が更新されません。

誰かがこの問題の解決策を持っていますか?

ここに私のコントローラー:

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() で「クリック」イベントを手動でトリガーすると、醜い「クリック」トリガー タイプ (日付ピッカーを非表示にするために入力フィールドでクリック イベントが必要でした) を使用せずにジョブが実行されます。

IE のバージョンを検出するために、html ファイルに次の行を追加します。

<!--[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) {

古い答え(参照用):

Github で提起された angular-strap の問題で「lukashinsch」が述べているように (以下のリンクを参照)、「クリック」などの別のトリガーを使用することが、この回避策です。

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 に答える