Событие фокуса ввода поля Angularjs?
i использую angularjs, и я создал нормальное поле ввода следующим образом:
<input type="text" style="border: none" ng-model="model" >
Я хочу сделать следующее:
если кто-то щелкнет в поле ввода, я хочу вызвать пример метода A. Затем он пишет текст в этом поле, и если человек нажимает где-то на моей странице, чтобы поле ввода больше не фокусировалось, он должен вызывать метод B. возможно ли это с угловыми? если да, как я могу это сделать?
ng-focus активен только во входном событии, но не на выходе.
Я хочу заблокировать что-то с этим, метод А устанавливает только значение true, а метод B устанавливает одно значение в значение false. но я должен знать, когда поле ввода активно, а когда нет.
Ответы
Ответ 1
Вы смотрите ng-focus
и ng-blur
.
<input type="text" style="border: none" ng-model="model" ng-focus="A()" ng-blur="B()">
На боковой ноте используйте классы css вместо встроенных стилей.:)
Или просто вызовите тот же метод с аргументом и установите значение acc: -
<input type="text" style="border: none" ng-model="model" ng-focus="A(true)" ng-blur="A(false)">
Ответ 2
Если вы используете функциональные возможности, которые вы можете применить к полям во всем приложении, вы можете поместить его в директиву.
Вот пример, который добавляет и удаляет класс css на основе фокуса или размытия поля:
angular.module('myApp').directive('inputFocus', function () {
var FOCUS_CLASS = 'input-focused';
return {
restrict: 'A',
priority: 1,
require: 'ngModel',
link: function (scope, element, attrs, ctrl) {
element.bind('focus',function () {
element.parent().addClass(FOCUS_CLASS);
}).bind('blur', function () {
element.parent().removeClass(FOCUS_CLASS);
});
}
};
});
Ответ 3
Вы можете привязать метод B к директиве angular ng-blur, чтобы определить, когда вход теряет фокус
<input type='text' ng-focus='methodA()' ng-blur='methodB()' ng-model='model'>