与AngularJS中的占位符相关的GitHub问题

时间:2014-07-16 10:40:26

标签: angularjs

我在AngularJs中工作并在所有输入表单元素中应用了占位符。由于这个原因,当页面加载时,$ dirty是隐含的,因此在IE10中显示错误消息而没有任何用户修改(也称为GitHub问题)。代码在firefox和chrome中工作正常。这个GitHub问题有什么解决方案吗?

这是代码:

<input type="email" placeholder="Enter email" name="userEmail" class="form-control" ng-model="user.email" required autofocus autocomplete="on" autofill> 

请填写此字段

- edit-- 格式代码块

1 个答案:

答案 0 :(得分:0)

您看到的行为是由IE10和required指令的组合引起的。

要解决它,您可以编写一个自定义指令来执行验证,而不是像这样的angular required指令:

.directive('myRequired', function () {
  return {
    require: '?ngModel',
    link: function(scope, elm, attr, ctrl) {
      if (!ctrl) return;

      var validator = function(value) {
        var isEmpty = ctrl.$isEmpty(value);
        ctrl.$setValidity('required', !isEmpty);
        return isEmpty ? '' : value;
      };

      ctrl.$formatters.push(validator);
      ctrl.$parsers.unshift(validator);
    }
  };
});

然后在html中用required替换my-required

<input type="email" placeholder="Enter email" name="userEmail" class="form-control" ng-model="user.email" my-required autofocus autocomplete="on" autofill />

有关完整示例,请参阅:http://plnkr.co/edit/zdtHWkxhqhtFPIwWlqWQ?p=preview

希望这适合你。