$ setValidity不起作用

时间:2016-05-28 12:15:10

标签: javascript angularjs

我有一个条件,如果用户输入联系号码或电子邮件表格应被视为有效,为了完成这项工作,我尝试使用$ setValidity但不起作用,下面是我的代码:

if($scope.contact.contactNumber || $scope.contact.email) {
    $scope.addContactForm.contactNumber.$setValidity('required', false);
    $scope.addContactForm.email.$setValidity('required', false);

    // In console it will show invalid as true & valid as false
    console.log('Scope:', $scope.addContactForm);
}

2 个答案:

答案 0 :(得分:0)

这是因为你做错了。如果要将字段设置为有效状态,则应将true作为第二个参数传递。阅读documentation

下面是如何正确使用$ setValidity的示例。



angular.module('app', []);

angular.module('app').controller('Example', function () {
  this.setValid = () => {
    this.form.contactNumber.$setValidity('required', true);
    this.form.email.$setValidity('required', true);
  };
  
  this.setInvalid = () => {
    this.form.contactNumber.$setValidity('required', false);
    this.form.email.$setValidity('required', false);
  };
});

<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.5.5/angular.js"></script>
<div ng-app="app" ng-controller="Example as Example">
  <form name="Example.form">
    <input type="text" name="contactNumber" ng-model="contactNumber" required><br>
    <input type="text" name="email" ng-model="email" require>
  </form>
  <br>
  $invalid = {{Example.form.$invalid}}, $valid = {{Example.form.$valid}}<br>
  <button type="button" ng-click="Example.setValid()">set valid</button>
  <button type="button" ng-click="Example.setInvalid()">set invalid</button>
</div>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

如果有人遇到相同的问题,发布此信息可能会有所帮助。我尝试传递null,它开始工作,而不是false。

$('.keypress').click(function(e) {
  var code = $(this).data('code');
  var e = jQuery.Event("keydown");
  e.which = 65;
  $('#input').trigger(e);
});

我希望它对某人有帮助