Angular JS |角度验证匹配密码

时间:2016-07-06 19:10:10

标签: javascript angularjs forms validation match

我正在尝试使用https://github.com/TheSharpieOne/angular-validation-match中的角度验证匹配。我无法获得匹配项以触发任何类型的表单验证。现在,即使密码不同,也不会显示密码不匹配。这可能是什么原因?下面是html。

  <form name="vm.changeForm"
        ng-submit="vm.changeForm.$valid && vm.attemptChange(password);"
        >
    <md-input-container class="md-block">
      <input required
             type="password"
             placeholder="New Password"
             name="passwordName"
             ng-model="password"
             />
      <div ng-messages="vm.changeForm.passwordConfirm.$error"
           ng-if="vm.changeForm.passwordConfirm.$touched"
           role="alert"
           >
        <div ng-message="required">Please enter a password.</div>
      </div>
    </md-input-container>
    <md-input-container class="md-block">
      <input required
             type="password"
             placeholder="Confirm New Password"
             name="myConfirmField"
             ng-model="passwordConfirm"
             match="password"
             />

      <div ng-show="vm.changeForm.passwordConfirm.$error.match"
           ng-if="vm.changeForm.passwordConfirm.$touched"
           role="alert">Passwords do not match</div>


    </md-input-container>
  </form>

1 个答案:

答案 0 :(得分:2)

备注:

  1. 您在同一div使用ng-if和ng-show,这是不必要的,您可以简单地使用简单的ng-if

  2. 您必须使用name属性而不是ng-model

  3. 因此,由于您的input名称是 myConfirmField ,您必须将其替换为:

    <div ng-show="vm.changeForm.passwordConfirm.$error.match" ng-if="vm.changeForm.passwordConfirm.$touched" role="alert">Passwords do not match</div>
    

    有:

    <div ng-if="vm.changeForm.myConfirmField.$touched && vm.changeForm.myConfirmField.$error.match" role="alert">Passwords do not match</div>
    

    然后你应该得到预期的结果。