Задать вопрос
des1roer
@des1roer
ученье - свет, а неученье - приятный полумрак

Angular валидация формы?

Можете показать минимально рабочий пример для валидации чисел и даты?

нашел такое

codepen.io/sevilayha/pen/xFcdI

но опять же там принцип mvc вродь как нарушен - логика во вью

а если что-то вроде такого

jsfiddle.net/STEVER/n7uzrets

то опять же не директивно

наверно вот самый близкий к истине вариант

jsfiddle.net/zCUVf

но опять же его переписать надо

по факту хочется следующее

валидны любые числа. 12.34 \ 1,234 \ 1234

дата валидна 23:00:00
  • Вопрос задан
  • 819 просмотров
Подписаться 1 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 1
des1roer
@des1roer Автор вопроса
ученье - свет, а неученье - приятный полумрак
в черновом варианте как-то так

<div ng-app="HelloHabr">
                <form name="userForm">
                    <input class="form-control" type="text" name="LovelyMimimi" ng-model="mimimi" mimimi/>

                    <button type="submit" class="btn btn-primary" ng-disabled="userForm.$invalid">Submit</button>
                </form>
                <style>                  
                    input.ng-valid {
                        background-color: #81F7F3;
                    }
                    input.ng-invalid {
                        background-color: #F78181;
                    }
                </style>


js

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

function isNumeric(n) {
    return !isNaN(parseFloat(n)) && isFinite(n);
}

app.directive('mimimi', function () {
    return {
        require: 'ngModel',
        link: function (scope, elm, attrs, ctrl) {
            ctrl.$setValidity('mimimi', false);            
            ctrl.$parsers.unshift(function (mimimi) {
                mimimi = (mimimi.replace(',', "."));
                if (isNumeric(mimimi))
                {
                    ctrl.$setValidity('mimimi', true);
                    return mimimi.toUpperCase();
                }
                else
                {
                    ctrl.$setValidity('mimimi', false);
                    return undefined;
                }
            });
        }
    };
});
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы