JSFiddle - React, Tailwind, and code Playground
HTML
<link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
<div ng-app="myApp">
<div class="row" ng-controller='Ctrl'>
<form name="form1">
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="form-group">
<input type="password" ng-model="login.password" name="password" id="password" class="form-control input-lg" placeholder="Password" tabindex="5">
</div>
</div>
<div class="col-xs-12 col-sm-6 col-md-6">
<div class="form-group">
<input ng-model="login.verify" type="password" name="verify" placeholder="Confirm Password" nx-equal="login.password" class="form-control input-lg" tabindex="6">
<div class="error" ng-show="form1.verify.$error.nxEqual">Passwords are not equal</div>
</div>
</div>
</form>
</div>
</div>
CSS
body {
margin: 10px;
}
h2 {
margin: 20px 0 5px 0;
}
.error {
color: red;
margin: 2px 0 5px 0;
}
JavaScript
var app = angular.module("myApp", []);
app.controller('Ctrl', function($scope) {
})
app.directive('nxEqual', function() {
return {
require: 'ngModel',
link: function(scope, elem, attrs, model) {
if (!attrs.nxEqual) {
console.error('nxEqual expects a model as an argument!');
return;
}
scope.$watch(attrs.nxEqual, function(value) {
model.$setValidity('nxEqual', value === model.$viewValue);
});
model.$parsers.push(function(value) {
var isValid = value === scope.$eval(attrs.nxEqual);
model.$setValidity('nxEqual', isValid);
return isValid ? value : undefined;
});
}
};
});