Добавить класс при фокусе
Доброго времени суток.
Есть шаблон template.htm примерно с такой структурой, но сильно накрученный другими элементами (которые не имеют отношения к вопросу): <div> <div class="test"> <label for="name">name</label> <input type="text" name="name" ng-model="item.name"> </div> <div class="test"> <label for="desc">desc</label> <input type="text" name="desc" ng-model="item.desc"> </div> <div class="test"> <label for="count">count</label> <input type="text" name="count" ng-model="item.count"> </div> <div class="test"> <label for="label">label</label> <input type="text" name="label" ng-model="label"> </div> </div> Подскажите, как правильно добавлять и удалять класс для блока div class="test" при фокусе дочернего input? В рамках одного div и input все понятно... Вот так: <div class="test" ng-class="{'focused': focused}> <label for="name">name</label> <input type="text" name="name" ng-model="item.name" ng-focus="focused=true" ng-blur="focused=false"> </div> Но как быть в случаи наличия десятка разных input? |
TestUser013,
$scope.focused = {name: false, desc: false, count: false, label: false} <div class="test" ng-class="{'focused': focused.name}> <label for="name">name</label> <input type="text" name="name" ng-model="item.name" ng-focus="focused.name=true" ng-blur="focused.name=false"> ... </div> |
destus,
Это получается, что для каждого input надо свою переменную? А нельзя как-то через $element или $parent? :( |
TestUser013,
Можно. $scope.focusInput= function($event ) { angular.element($event.target).parent().addClass('focused'); }; $scope.blurInput= function($event ) { angular.element($event.target).parent().removeClass('focused'); }; <div class="test"> <label for="name">name</label> <input type="text" name="name" ng-model="item.name" ng-focus="focusInput($event)" ng-blur="blurInput($event)"> </div> |
Спасибо! :)
Чей-то плюсики не ставятся. Вы должны добавить отзыв кому-то ещё, прежде чем сможете снова добавить его destus :blink: |
Часовой пояс GMT +3, время: 00:45. |