Подтвердить что ты не робот

Событие фокуса ввода поля Angularjs?

i использую angularjs, и я создал нормальное поле ввода следующим образом:

<input type="text" style="border: none" ng-model="model" >

Я хочу сделать следующее:

если кто-то щелкнет в поле ввода, я хочу вызвать пример метода A. Затем он пишет текст в этом поле, и если человек нажимает где-то на моей странице, чтобы поле ввода больше не фокусировалось, он должен вызывать метод B. возможно ли это с угловыми? если да, как я могу это сделать? ng-focus активен только во входном событии, но не на выходе.

Я хочу заблокировать что-то с этим, метод А устанавливает только значение true, а метод B устанавливает одно значение в значение false. но я должен знать, когда поле ввода активно, а когда нет.

4b9b3361

Ответ 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'>