Angular: Empty Fiddle
http://angularjs.org/
by Hellfrom
HTML
<div ng-controller="MyCtrl">
Hello, {{name}}!
<form name="testForm">
<input name="testInput" ng-model="model.value" number-only validate-equals="model.compareTo">
<!--<input name="testInput" ng-model="model.value" numbers-only>-->
<span ng-show="showError(testForm.testInput, 'equal')">error</span>
</form>
</div>
JavaScript
var myApp = angular.module('myApp',[])
//двусторонняя проверка и со стороны модели и со стороны клиента
.directive('validateEquals', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ngModelCtrl) {
function validateEqual(myValue) {
// console.log(myValue);
var valid = (myValue === scope.$eval(attrs.validateEquals));
// console.log(valid);
// console.log(scope.$eval(attrs.validateEquals));
ngModelCtrl.$setValidity('equal', valid);
return valid ? myValue : undefined;
}
ngModelCtrl.$parsers.push(validateEqual);
ngModelCtrl.$formatters.push(validateEqual);
scope.$watch(attrs.validateEquals, function(newValue, oldValue) {
//console.log(attrs.validateEquals);
//пропускаем инициализацию
if(newValue!==oldValue){
ngModelCtrl.$setViewValue(ngModelCtrl.$viewValue);
}
});
}
};
})
.directive('numberOnly', function() {
return {
require: 'ngModel',
link: function(scope, elm, attrs, ngModelCtrl) {
var inputMask = function (inputValue) {
console.log(inputValue);
console.log(inputValue + '!');
var transformedInput;
if(ngModelCtrl.$pristine === true){
transformedInput = inputValue!==undefined && inputValue!=="" ? inputValue.toLowerCase().replace(/\+|\s|_|\|/g, ""):undefined;
}else{
transformedInput = inputValue!==undefined ? inputValue.toLowerCase().replace(/\+|\s|_|\|/g, ""):undefined;
}
console.log(transformedInput + "!!");
if (transformedInput!==inputValue) {
console.log('не равно');
console.log(transformedInput);
...