9

ユーザーが何もせずにページが読み込まれると、IE10 では常にフォーム フィールドが無効になる単純なログイン フォームがあります。

フォーム フィールドは非常にシンプルです。

<input type="text" required class="input-block-level" placeholder="username" ng-model="username" name="username" tabindex="1">
<p class="text-error" ng-show="loginForm.username.$dirty && loginForm.username.$invalid">
    <span ng-show="loginForm.username.$error.required">required</span>
</p>

http://plnkr.co/edit/DNUanGGaZDgFWYrm3gLK?p=preview

上記のプランカーでは、フィールドに焦点を当てることで問題を再現できますが、ページの読み込み時にアプリ内でエラー フィールドが表示されます。他のブラウザでは問題なく動作します。

4

2 に答える 2

4

誰かがこれの要旨を書いたので、必要なボイラープレートをすべて含めて以下に再掲します。

angular-hacks.js:

(function (window, angular, undefined) {
    'use strict';
    var hacks = angular.module('hacks', []);
    hacks.config(['$provide', function ($provide) {
        $provide.decorator('$sniffer', ['$delegate', function ($sniffer) {
            var msie = parseInt((/msie (\d+)/.exec(angular.lowercase(navigator.userAgent)) || [])[1], 10);
            var _hasEvent = $sniffer.hasEvent;
            $sniffer.hasEvent = function (event) {
                if (event === 'input' && msie === 10) {
                    return false;
                }
                _hasEvent.call(this, event);
            }
            return $sniffer;
        }]);
    }]);
})(window, window.angular);

重大な回帰テストを行ったふりをするつもりはありませんが、これまでのところ問題はありませんでした。IE10 のすべての入力イベントを除外しているため、より具体的にする必要がある場合があります。

于 2013-06-30T20:01:16.453 に答える
0

私の回避策:

ng-if="true"入力要素に追加します。

angular 1.2.28 でのみテストされています。

于 2016-06-21T09:18:51.500 に答える