2016-02-08 2 views
0

У меня есть форма, где пользователю необходимо ввести 2 раза его электронную почту. Я нашел в Интернете (но не смог найти ссылку больше) какой-то угловой код делал то, что хотел. Единственная проблема в том, когда 2 письма такие же, один вход еще есть классAngularJS, выпуск на форме проверка

.ng-invalid.ng грязного

Так что я не могу отправить форму.

Мой код выглядит следующим образом:

Css:

.ng-invalid.ng-dirty{ 
    border-color: #FA787E; 
} 

.ng-valid.ng-dirty{ 
    border-color: #78FA89; 
} 

HTML:

<div ng-app="myApp"> 
     <form name="formTemplate" novalidate> 
     <input id="email1" type="email" ng-model="currentForm.email1" name="email1" required> 
     <span ng-show="formTemplate.email1.$error.required && formTemplate.email1.$dirty">required</span> 
     <span ng-show="!formTemplate.email1.$error.required && formTemplate.email1.$error.email1 && formTemplate.email1.$dirty">invalid email</span> 
     <input id="email2" type="email" name="email2" ng-model="currentForm.email2" same-email required> 
     <span ng-show="formTemplate.email2.$error.required && formTemplate.email2.$dirty">Please confirm your email.</span> 
     <span ng-show="!formTemplate.email2.$error.required && formTemplate.email2.$error.noMatch && formTemplate.email1.$dirty">Emails do not match.</span> 
     </form> 
    </div> 

JavaScript:

var app = angular.module('myApp', ['UserValidation']); 

angular.module('UserValidation', []).directive('sameEmail', function() { 
    return { 
     require: 'ngModel', 
     link: function (scope, elm, attrs, ctrl) { 
      ctrl.$parsers.unshift(function (viewValue, $scope) { 
       var noMatch = viewValue != scope.formTemplate.email1.$viewValue; 
       ctrl.$setValidity('noMatch', !noMatch) 
      }) 
     } 
    } 
}) 

Здесь jsfiddle: http://jsfiddle.net/malamine_kebe/pq6fw04v/

+0

Я думаю, что у уже validating.Thats способ это показать сообщение электронной почты не совпадают –

ответ

0

Im обновлениеjsfiddle. Вы не возвращаете значение от ctrl.$parsers.unshift.

ctrl.$parsers.unshift(function (viewValue, $scope) { 
      var noMatch = viewValue != scope.formTemplate.email1.$viewValue; 
      ctrl.$setValidity('noMatch', !noMatch); 
      return noMatch; 
     }) 

Обновлено jsfiddle

+0

спасибо за вашу помощь, но теперь она не проверяет, если 2 письма одинаковы – user3636476

+0

Это чек. Пожалуйста, проверьте [jsfiddle] (http://jsfiddle.net/Stepan_Kasyanenko/1hfxhgsk/1/) –

Смежные вопросы