AngularJS /如何防止IE触发自动输入验证?

时间:2014-01-29 19:07:17

标签: javascript forms internet-explorer angularjs mobile-safari

我有一些页面有一些表格 每个表单都包含一些字段限制,例如required等等。

我想仅在用户与他们交互时才显示验证错误(UX?=>是) 实际上,只要字段$pristine表示没有触及,就不会显示任何错误。

我设法通过很多浏览器达到了这个要求,除了...... Internet Explorer (尤其是IE> 10)。 实际上,IE似乎从一开始就将所有字段视为$dirty

在网上冲浪,我发现了这个“修复”:

MyMainAppModule.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;
        }]);

运行它... ...现在IE播放效果很好。 然后在Safari Mobile(Iphone)中运行它......失望。 为什么?因为任何类型字符都会考虑AFTER事件处理程序,例如$watch等...导致预期与发生的事件之间的转换。 很遗憾,因为它之前在Safari Mobile中运行良好。

因此,实际的困境是:优先使用Safari Mobile或IE:)

有人曾在IE中尝试过这种情况吗? 是否还有其他一些“更好”的解决方案可供我实施?

1 个答案:

答案 0 :(得分:3)

返回 _hasEvent.call(this,event);