我有一些页面有一些表格
每个表单都包含一些字段限制,例如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中尝试过这种情况吗? 是否还有其他一些“更好”的解决方案可供我实施?
答案 0 :(得分:3)
返回 _hasEvent.call(this,event);